-
Notifications
You must be signed in to change notification settings - Fork 1
/
configuration.ts
73 lines (68 loc) · 1.55 KB
/
configuration.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import Joi from 'joi';
import { FileTypesEnum } from "./file-types.enum.js";
export interface TermsConfiguration {
type: FileTypesEnum,
terms: string,
tag: string,
}
export interface OutputLocale {
tms: string,
output: string,
}
export interface OutputConfiguration {
type: FileTypesEnum,
destination: string,
sourceLocale: OutputLocale,
targetLocale: OutputLocale,
tag: string,
useSourceOnEmpty?: boolean,
}
export interface Configuration {
terms: TermsConfiguration[],
snapshots: {
tag: string,
importInLocales: string[],
}[],
outputs: OutputConfiguration[],
lokalise: {
platforms: ('web')[],
obsoleteKeyTag?: string,
},
errorOnMissingSnapshot: boolean,
}
export const configValidator = Joi.object({
terms: Joi.array().items(
Joi.object({
terms: Joi.string(),
type: Joi.string().valid(FileTypesEnum.XLIFF2, FileTypesEnum.JSON),
tag: Joi.string(),
}),
),
snapshots: Joi.array().items(
Joi.object({
tag: Joi.string(),
importInLocales: Joi.array().items(Joi.string()),
}),
),
outputs: Joi.array().items(
Joi.object({
destination: Joi.string(),
type: Joi.string().valid(FileTypesEnum.XLIFF2, FileTypesEnum.JSON),
sourceLocale: Joi.object({
tms: Joi.string(),
output: Joi.string(),
}),
targetLocale: Joi.object({
tms: Joi.string(),
output: Joi.string(),
}),
tag: Joi.string(),
useSourceOnEmpty: Joi.boolean().optional(),
}),
),
lokalise: Joi.object({
platforms: Joi.array().items(Joi.string()),
obsoleteKeyTag: Joi.string().optional(),
}),
errorOnMissingSnapshot: Joi.boolean(),
});