otus-localization
Version:
A translation tool for Angular i18n(angular-t9n)
483 lines (482 loc) • 18.2 kB
TypeScript
/// <reference types="node" />
import { DynamicModule, Provider } from "@nestjs/common";
import { Request, Response } from "express";
import { Observable } from "rxjs";
import { workspaces } from "@angular-devkit/core";
declare class AppModule {
static forRoot(providers: Provider[]): DynamicModule;
}
interface HalLink {
href: string;
templated?: boolean;
}
interface Hal {
_links?: {
[key: string]: HalLink;
};
_embedded?: {
[key: string]: unknown;
};
}
declare class LinkBuilder {
private _links;
self(href: string): this;
hrefWhen(condition: boolean, name: string, hrefFactory: () => string): this;
href(name: string, href: string): this;
templatedHref(name: string, href: string): this;
build(): {
[key: string]: HalLink;
} | undefined;
}
type Filterable<TModel> = (filter: string) => (e: TModel) => boolean;
interface Filterables<TModel> {
[property: string]: Filterable<TModel>;
}
declare class FilterableBuilder<TModel> {
private readonly _selector;
private _filterables;
constructor(_selector?: (model: TModel) => any);
addFilterables(...properties: string[]): this;
build(): Filterables<TModel>;
}
interface TranslationSourceUnit {
id: string;
source: string;
description?: string;
meaning?: string;
locations?: string[];
}
declare class SourceOrphanRequest implements Partial<TranslationSourceUnit> {
id: string;
}
interface TranslationTargetUnit {
id: string;
source: string;
target: string;
state: "initial" | "translated" | "reviewed" | "final";
description?: string;
meaning?: string;
locations?: string[];
}
declare class TargetUnitRequest implements Partial<TranslationTargetUnit> {
target: string;
state: "initial" | "translated" | "reviewed" | "final";
}
interface QueryParams {
[key: string]: string;
}
type Sortable<TModel> = (a: TModel, b: TModel) => number;
interface Sortables<TModel> {
[property: string]: Sortable<TModel>;
}
declare class PaginationResponse<TEntry, TResponse> implements Hal {
entriesPerPage: number;
currentPage: number;
totalEntries: number;
totalPages: number;
_links?: {
[key: string]: HalLink;
};
_embedded?: {
[key: string]: unknown;
};
constructor(params: {
query: QueryParams;
entries: TEntry[];
responseMapper: (entry: TEntry) => TResponse;
urlFactory: (query: QueryParams) => string;
sortables?: Sortables<TEntry>;
filterables?: Filterables<TEntry>;
});
private _sort;
private _filter;
}
declare class SortableBuilder<TModel> {
private readonly _selector;
private _sortables;
constructor(_selector?: (model: TModel) => any);
addSortables(...properties: string[]): this;
addSafeSortables(...properties: string[]): this;
build(): Sortables<TModel>;
}
declare class TranslationSource {
readonly language: string;
readonly unitMap: Map<string, TranslationSourceUnit>;
readonly units: TranslationSourceUnit[];
baseHref?: string;
constructor(language: string, unitMap: Map<string, TranslationSourceUnit>);
}
declare class RootResponse implements Hal {
sourceLanguage: string;
unitCount: number;
_links?: {
[key: string]: HalLink;
};
_embedded?: {
[key: string]: unknown;
};
constructor(source: TranslationSource, linkHelper: LinkHelper);
}
declare class SourceUnitResponse implements TranslationSourceUnit, Hal {
id: string;
source: string;
description?: string;
meaning?: string;
locations?: string[];
_links?: {
[key: string]: HalLink;
};
_embedded?: {
[key: string]: unknown;
};
constructor(unit: TranslationSourceUnit, linkHelper: LinkHelper);
}
declare class SourceOrphanMatchResponse extends SourceUnitResponse {
readonly distance: number;
constructor(distance: number, unit: TranslationSourceUnit, linkHelper: LinkHelper);
}
interface TranslationTargetOrphan {
unit: TranslationTargetUnit;
similar: {
distance: number;
unit: TranslationTargetUnit;
}[];
}
declare class TranslationTarget {
readonly source: TranslationSource;
readonly language: string;
readonly changed: Observable<void>;
readonly units: TranslationTargetUnit[];
readonly unitMap: Map<string, TranslationTargetUnit>;
readonly orphans: TranslationTargetOrphan[];
readonly orphanMap: Map<string, TranslationTargetOrphan>;
baseHref?: string;
private _changedSubject;
constructor(source: TranslationSource, language: string, unitMap: Map<string, TranslationTargetUnit>);
translateUnit(unit: TranslationTargetUnit, update: Pick<TranslationTargetUnit, "target" | "state">): TranslationTargetUnit;
migrateOrphan(orphan: TranslationTargetOrphan, targetUnit: TranslationTargetUnit): void;
deleteOrphan(orphan: TranslationTargetOrphan): void;
private _generateTargetUnits;
private _findOrphans;
private _generateOrphan;
private _calculateDistance;
private _normalizeWhitespace;
}
interface TranslationSourceOrphan {
unit: TranslationSourceUnit;
similar: {
distance: number;
unit: TranslationSourceUnit;
}[];
targetOrphans: Map<TranslationTarget, TranslationTargetOrphan>;
}
declare class SourceOrphanResponse extends SourceUnitResponse {
constructor(orphan: TranslationSourceOrphan, linkHelper: LinkHelper);
}
declare class TargetUnitResponse implements TranslationTargetUnit, Hal {
id: string;
source: string;
target: string;
state: "initial" | "translated" | "reviewed" | "final";
description?: string;
meaning?: string;
locations?: string[];
_links?: {
[key: string]: HalLink;
};
_embedded?: {
[key: string]: unknown;
};
constructor(target: TranslationTarget, unit: TranslationTargetUnit, linkHelper: LinkHelper);
}
declare class TargetOrphanMatchResponse extends TargetUnitResponse {
readonly distance: number;
constructor(distance: number, target: TranslationTarget, unit: TranslationTargetUnit, linkHelper: LinkHelper);
}
declare class TargetOrphanResponse extends TargetUnitResponse {
constructor(target: TranslationTarget, orphan: TranslationTargetOrphan, linkHelper: LinkHelper);
}
declare class TargetResponse implements Hal {
language: string;
unitCount: number;
initialCount: number;
translatedCount: number;
reviewedCount: number;
finalCount: number;
orphanCount: number;
_links?: {
[key: string]: HalLink;
};
_embedded?: {
[key: string]: unknown;
};
constructor(target: TranslationTarget, linkHelper: LinkHelper);
}
declare class TargetsResponse implements Hal {
languages: string[];
_links?: {
[key: string]: HalLink;
};
_embedded?: {
[key: string]: unknown;
};
constructor(languages: string[], linkHelper: LinkHelper);
}
declare class LinkHelper {
private readonly _origin;
constructor(request: Request);
root(): string;
sourceUnits(query?: QueryParams): string;
sourceUnit(unitOrId: TranslationSourceUnit | string): string;
sourceOrphans(query?: QueryParams): string;
sourceOrphan(unitOrId: TranslationSourceOrphan | string): string;
targets(): string;
target(language: string): string;
targetUnits(target: TranslationTarget, query?: QueryParams): string;
targetUnit(unitOrId: TranslationTargetUnit | string, target: TranslationTarget): string;
targetOrphans(target: TranslationTarget, query?: QueryParams): string;
targetOrphan(unitOrId: TranslationTargetOrphan | string, target: TranslationTarget): string;
}
declare class AppController {
private _translationSource;
private _linkHelper;
constructor(_translationSource: TranslationSource, _linkHelper: LinkHelper);
root(): RootResponse;
}
declare abstract class PersistenceStrategy {
abstract create(target: TranslationTarget): Promise<void>;
abstract update(target: TranslationTarget): Promise<void>;
}
declare class TranslationTargetRegistry {
private readonly _source;
private readonly _persistenceStrategy;
private readonly _targets;
constructor(_source: TranslationSource, _persistenceStrategy: PersistenceStrategy);
register(language: string, units: Map<string, TranslationTargetUnit>, baseHref?: string): TranslationTarget;
create(language: string, baseHref?: string): Promise<TranslationTarget>;
get(key: string): TranslationTarget | undefined;
has(key: string): boolean;
keys(): string[];
values(): TranslationTarget[];
sortWithIds(ids: any[], language: string): void;
private _synchronizeSources;
private _normalizeWhitespace;
}
declare class OrphanRegistry {
readonly orphans: TranslationSourceOrphan[];
readonly orphanMap: Map<string, TranslationSourceOrphan>;
constructor(translationTargetRegistry: TranslationTargetRegistry, source: TranslationSource);
migrateOrphan(orphan: TranslationSourceOrphan, unit: TranslationSourceUnit): void;
deleteOrphan(orphan: TranslationSourceOrphan): void;
}
declare class TargetPathBuilder {
private readonly _targetDirectory;
private readonly _basename;
private readonly _extension;
constructor(_targetDirectory: string, sourceFile: string);
createPath(target: TranslationTarget | string): string;
getTargetDirectory(): string;
}
declare class SourceUnitsController {
private _translationSource;
private _translationTargetRegistry;
private _linkHelper;
constructor(_translationSource: TranslationSource, _translationTargetRegistry: TranslationTargetRegistry, _linkHelper: LinkHelper);
getPagination(queryParams: QueryParams): PaginationResponse<TranslationSourceUnit, SourceUnitResponse>;
getSourceUnit(id: string): SourceUnitResponse;
reWriteTargetLanguage(language: string, body: Array<object>): {
data: null;
message: string;
};
private _createEmbeddedObject;
}
declare class TargetOrphansController {
private _translationTargetRegistry;
private _linkHelper;
private _targetOrphanSortables;
private _targetOrphanFilterables;
constructor(_translationTargetRegistry: TranslationTargetRegistry, _linkHelper: LinkHelper);
getPagination(language: string, queryParams: any): PaginationResponse<TranslationTargetOrphan, TargetOrphanResponse>;
getOrphan(language: string, id: string): TargetOrphanResponse;
deleteOrphan(language: string, id: string): void;
}
declare class TargetUnitsController {
private _translationTargetRegistry;
private _linkHelper;
private _targetUnitSortables;
private _targetUnitFilterables;
constructor(_translationTargetRegistry: TranslationTargetRegistry, _linkHelper: LinkHelper);
getPagination(language: string, queryParams: any): PaginationResponse<TranslationTargetUnit, TargetUnitResponse>;
getTargetUnit(language: string, id: string): TargetUnitResponse;
updateTargetUnit(language: string, id: string, body: TargetUnitRequest): TargetUnitResponse;
}
declare class TargetInfo {
readonly project: string;
readonly sourceFile: string;
readonly sourceLanguage: string;
readonly autoTargetFile: string;
constructor(project: string, sourceFile: string, sourceLanguage: string, autoTargetFile: string);
}
declare class GitService {
private _targetInfo;
constructor(_targetInfo: TargetInfo);
commitHandler(): Promise<any>;
syncLocalizationToDesktop(): Promise<{
stdout: string;
stderr: string;
}>;
}
declare class SyncService {
private targetInfo;
private _targetPathBuilder;
constructor(targetInfo: TargetInfo, _targetPathBuilder: TargetPathBuilder);
extractI18n(): Promise<void>;
loadTranslatedFile(): Promise<Buffer>;
saveTranslatedFile(file: any): Promise<void>;
restart(): void;
saveSortedId(data: Array<string>): Promise<void>;
getSortedId(): Promise<string[] | undefined>;
}
declare class TargetsController {
private _translationTargetRegistry;
private _linkHelper;
private git;
private sync;
constructor(_translationTargetRegistry: TranslationTargetRegistry, _linkHelper: LinkHelper, git: GitService, sync: SyncService);
targets(): TargetsResponse;
syncGitFromRepo(): Promise<{
data: null;
message: string;
code: number;
error?: undefined;
} | {
error: any;
message: string;
code: number;
data?: undefined;
}>;
syncLocalization(): Promise<{
data: null;
code: number;
error?: undefined;
} | {
data: null;
error: unknown;
code: number;
}>;
extracti18n(): Promise<{
data: unknown;
message: string;
}>;
loadTranslatedFile(res: Response): Promise<void>;
loadSortedId(): Promise<string[] | undefined>;
restart(): Promise<void>;
saveTranslatedFile(file: any): Promise<{
message: unknown;
code: number;
}>;
target(language: string): TargetResponse;
createTarget(language: string): Promise<TargetResponse>;
}
interface TranslationDeserializationResult<TUnit> {
language: string;
unitMap: Map<string, TUnit>;
}
declare abstract class TranslationDeserializer {
abstract deserializeSource(content: string): TranslationDeserializationResult<TranslationSourceUnit>;
abstract deserializeTarget(content: string): TranslationDeserializationResult<TranslationTargetUnit>;
}
declare class XmlParser {
private _parser;
parse(content: string): Document;
}
declare abstract class XlfDeserializerBase extends TranslationDeserializer {
private _parser;
constructor(_parser: XmlParser);
abstract deserializeSource(content: string): TranslationDeserializationResult<TranslationSourceUnit>;
abstract deserializeTarget(content: string): TranslationDeserializationResult<TranslationTargetUnit>;
protected _createDocument(content: string): Document;
private _assertEncoding;
protected _assertXliff(doc: Document): void;
protected _assertTargetLanguage(targetLanguage: string): void;
protected _getFileNode(doc: Document): Element;
protected _convertToString(node: Element): string;
}
declare class XlfDeserializer extends XlfDeserializerBase {
constructor(parser: XmlParser);
deserializeSource(content: string): {
language: string;
unitMap: Map<string, TranslationSourceUnit>;
};
deserializeTarget(content: string): {
language: string;
unitMap: Map<string, TranslationTargetUnit>;
};
protected _assertXliff(doc: Document): void;
private _deserializeTargetUnit;
private _deserializeSourceUnit;
private _extractSource;
private _extractTarget;
private _extractState;
}
declare class Xlf2Deserializer extends XlfDeserializerBase {
constructor(parser: XmlParser);
deserializeSource(content: string): {
language: string;
unitMap: Map<string, TranslationSourceUnit>;
};
deserializeTarget(content: string): {
language: string;
unitMap: Map<string, TranslationTargetUnit>;
};
protected _assertXliff(doc: Document): void;
private _deserializeTargetUnit;
private _deserializeSourceUnit;
private _extractSource;
private _extractTarget;
private _extractNote;
private _extractState;
}
interface Options {
translationFile: string;
targetTranslationPath?: string;
autoTargetFile?: string;
includeContextInTarget?: boolean;
port?: number;
}
declare abstract class SerializationOptions {
abstract includeContextInTarget: boolean;
}
declare abstract class TranslationSerializer {
abstract serializeTarget(target: TranslationTarget): string;
}
declare class XlfSerializer extends TranslationSerializer {
private _options;
constructor(_options: SerializationOptions);
serializeTarget(target: TranslationTarget): string;
private _transformState;
private _serializeNotes;
}
declare class Xlf2Serializer extends TranslationSerializer {
private _options;
constructor(_options: SerializationOptions);
serializeTarget(target: TranslationTarget): string;
private _serializeNotes;
}
declare abstract class WorkspaceHost implements workspaces.WorkspaceHost {
abstract readFile(path: string): Promise<string>;
abstract writeFile(path: string, data: string): Promise<void>;
abstract isDirectory(path: string): Promise<boolean>;
abstract isFile(path: string): Promise<boolean>;
}
declare class SerializationStrategy {
private readonly _host;
private readonly _serializer;
private readonly _deserializer;
constructor(_host: WorkspaceHost, _serializer: TranslationSerializer, _deserializer: TranslationDeserializer);
deserializeSource(path: string): Promise<TranslationDeserializationResult<TranslationSourceUnit>>;
deserializeTarget(path: string): Promise<TranslationDeserializationResult<TranslationTargetUnit>>;
serializeTarget(target: TranslationTarget, path: string): Promise<void>;
}
declare function timestamp(): string;
export { AppModule, AppController, SourceUnitsController, TargetOrphansController, TargetUnitsController, TargetsController, TranslationDeserializationResult, TranslationDeserializer, XlfDeserializer, XlfDeserializerBase, Xlf2Deserializer, XmlParser, LinkHelper, Hal, HalLink, LinkBuilder, Filterable, FilterableBuilder, Filterables, PaginationResponse, Sortable, SortableBuilder, Sortables, SourceOrphanRequest, TargetUnitRequest, QueryParams, RootResponse, SourceOrphanMatchResponse, SourceOrphanResponse, SourceUnitResponse, TargetOrphanMatchResponse, TargetOrphanResponse, TargetResponse, TargetsResponse, TargetUnitResponse, TranslationSource, TranslationSourceOrphan, TranslationSourceUnit, TranslationTarget, TranslationTargetOrphan, TranslationTargetUnit, Options, OrphanRegistry, PersistenceStrategy, TranslationTargetRegistry, TargetPathBuilder, SerializationOptions, TranslationSerializer, XlfSerializer, Xlf2Serializer, SerializationStrategy, TargetInfo, timestamp, WorkspaceHost };