@crowdin/crowdin-apps-functions
Version:
Utility library to easily and quickly develop Crowdin App
186 lines (185 loc) • 7.27 kB
TypeScript
import Crowdin, { ReportsModel, SourceFilesModel, TranslationsModel, WebhooksModel } from '@crowdin/crowdin-api-client';
interface UpdateOrCreateFileArgs {
client: Crowdin;
projectId: number;
name: string;
title?: string;
type?: SourceFilesModel.FileType;
directoryId?: number;
data: any;
file?: SourceFilesModel.File;
excludedTargetLanguages?: string[];
importOptions?: SourceFilesModel.ImportOptions;
}
/**
*
* @param client crowdin client instance
* @param projectId crowdin project id
* @param name file name
* @param title file title
* @param type file type
* @param directoryId directory id
* @param data file data
* @param file file object
* @param excludedTargetLanguages languages to be excluded from translation
* @returns id of newly created or existing file id
*/
export declare function updateOrCreateFile(client: Crowdin, projectId: number, name: string, title: string, type: SourceFilesModel.FileType, directoryId: number, data: any, file?: SourceFilesModel.File, excludedTargetLanguages?: string[]): Promise<number>;
export declare function updateOrCreateFile(args: UpdateOrCreateFileArgs): Promise<number>;
interface GetFolderArgs {
directories: SourceFilesModel.Directory[];
client: Crowdin;
projectId: number;
directoryName: string;
parentDirectory?: SourceFilesModel.Directory;
}
/**
*
* @param directories all directories
* @param crowdinClient crowdin client instance
* @param projectId project id
* @param directoryName directory name to find
* @param parentDirectory parent directory
* @returns found folder (or undefined in case if directory for given name does not exists) and files under it
*/
export declare function getFolder(directories: SourceFilesModel.Directory[], crowdinClient: Crowdin, projectId: number, directoryName: string, parentDirectory?: SourceFilesModel.Directory): Promise<{
folder?: SourceFilesModel.Directory;
files: SourceFilesModel.File[];
}>;
export declare function getFolder(args: GetFolderArgs): Promise<{
folder?: SourceFilesModel.Directory;
files: SourceFilesModel.File[];
}>;
/**
*
* @param directories all directories
* @param crowdinClient crowdin client instance
* @param projectId project id
* @param directoryName directory name to find
* @param parentDirectory parent directory
* @returns found or created folder and files under it
*/
export declare function getOrCreateFolder(directories: SourceFilesModel.Directory[], crowdinClient: Crowdin, projectId: number, directoryName: string, parentDirectory?: SourceFilesModel.Directory): Promise<{
folder: SourceFilesModel.Directory;
files: SourceFilesModel.File[];
created: boolean;
}>;
export declare function getOrCreateFolder(args: GetFolderArgs): Promise<{
folder: SourceFilesModel.Directory;
files: SourceFilesModel.File[];
created: boolean;
}>;
interface UploadTranslationsArgs {
client: Crowdin;
projectId: number;
fileId: number;
language: string;
fileName: string;
fileContent: any;
request?: Omit<TranslationsModel.UploadTranslationRequest, 'fileId' | 'storageId'>;
}
/**
*
* @param crowdinClient crowdin client instance
* @param projectId project id
* @param fileId file id
* @param language language id
* @param fileName file name for upload storage request
* @param fileContent file content
* @param request extra request fields for upload translation request
* @returns upload translation response
*/
export declare function uploadTranslations(crowdinClient: Crowdin, projectId: number, fileId: number, language: string, fileName: string, fileContent: any, request?: Omit<TranslationsModel.UploadTranslationRequest, 'fileId' | 'storageId'>): Promise<TranslationsModel.UploadTranslationResponse>;
export declare function uploadTranslations(args: UploadTranslationsArgs): Promise<TranslationsModel.UploadTranslationResponse>;
interface UpdateSourceFilesArgs {
client: Crowdin;
projectId: number;
directory: string;
fileEntities: FileEntity[];
parentDirectory?: SourceFilesModel.Directory;
}
/**
*
* @param crowdinClient crowdin client instance
* @param projectId project id
* @param directory directory name where files are located
* @param fileEntities files information
* @param parentDirectory parent directory
*/
export declare function updateSourceFiles(crowdinClient: Crowdin, projectId: number, directory: string, fileEntities: FileEntity[], parentDirectory?: SourceFilesModel.Directory): Promise<void>;
export declare function updateSourceFiles(args: UpdateSourceFilesArgs): Promise<void>;
interface HandleTranslationsArgs {
client: Crowdin;
projectId: number;
directory: string;
request: TranslationsRequest;
parentDirectory?: SourceFilesModel.Directory;
handleFn: (translations: any, language: string, file: SourceFilesModel.File) => Promise<void>;
}
/**
*
* @param crowdinClient crowdin client instance
* @param projectId projecy id
* @param directory directory name where source files are located
* @param request request if file files and languages info
* @param handleFn function that will be invoked for each translation file
* @param parentDirectory parent directory
*/
export declare function handleTranslations(crowdinClient: Crowdin, projectId: number, directory: string, request: TranslationsRequest, handleFn: (translations: any, language: string, file: SourceFilesModel.File) => Promise<void>, parentDirectory?: SourceFilesModel.Directory): Promise<void>;
export declare function handleTranslations(args: HandleTranslationsArgs): Promise<void>;
interface CreateOrUpdateWebhookArgs {
client: Crowdin;
projectId: number;
url: string;
events: WebhooksModel.Event[];
payload: any;
name: string;
requestType?: WebhooksModel.RequestType;
batchingEnabled?: boolean;
headers?: Record<string, string>;
contentType?: WebhooksModel.ContentType;
webhookId?: number;
webhookMatch?: (webhook: WebhooksModel.Webhook) => boolean;
}
/**
* Function to update or create webhook
*
* @returns updated or created webhook id
*/
export declare function createOrUpdateWebhook(args: CreateOrUpdateWebhookArgs): Promise<number>;
export declare class PaymentRequiredError extends Error {
subscribeLink: string;
initializedAt: string;
constructor(subscribeLink: string, initializedAt: string);
}
/**
*
* @param param0.appIdentifier method request
* @param param0.token bearer token
* @param param0.organization crowdin organization
*/
export declare function getSubscription({ appIdentifier, token, organization, baseUrl, }: SubscriptionRequest): Promise<Subscription>;
export declare function generateReport({ client, projectId, request, }: {
client: Crowdin;
projectId: number;
request: ReportsModel.GenerateReportRequest;
}): Promise<any | undefined>;
export interface FileEntity {
name: string;
title: string;
type: SourceFilesModel.FileType;
data: any;
}
export interface TranslationsRequest {
[fileId: string]: string[];
}
export interface SubscriptionRequest {
token: string;
organization?: string;
appIdentifier: string;
baseUrl?: string;
}
export interface Subscription {
expires: string;
}
export {};