@yartsun/chat-widget-types 1.0.3 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +214 -115
- package/dist/config.types.d.ts +111 -46
- package/dist/config.types.d.ts.map +1 -1
- package/dist/config.types.js +2 -66
- package/dist/config.types.js.map +1 -1
- package/dist/default-config.d.ts +3 -0
- package/dist/default-config.d.ts.map +1 -0
- package/dist/default-config.js +3 -0
- package/dist/default-config.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/migration/commands.d.ts +59 -0
- package/dist/migration/commands.d.ts.map +1 -0
- package/dist/migration/commands.js +286 -0
- package/dist/migration/commands.js.map +1 -0
- package/dist/migration/examples.d.ts +198 -0
- package/dist/migration/examples.d.ts.map +1 -0
- package/dist/migration/examples.js +439 -0
- package/dist/migration/examples.js.map +1 -0
- package/dist/migration/facade.d.ts +85 -0
- package/dist/migration/facade.d.ts.map +1 -0
- package/dist/migration/facade.js +168 -0
- package/dist/migration/facade.js.map +1 -0
- package/dist/migration/migrator.d.ts +49 -0
- package/dist/migration/migrator.d.ts.map +1 -0
- package/dist/migration/migrator.js +245 -0
- package/dist/migration/migrator.js.map +1 -0
- package/dist/migration/strategies.d.ts +85 -0
- package/dist/migration/strategies.d.ts.map +1 -0
- package/dist/migration/strategies.js +217 -0
- package/dist/migration/strategies.js.map +1 -0
- package/dist/migration/types.d.ts +196 -0
- package/dist/migration/types.d.ts.map +1 -0
- package/dist/migration/types.js +5 -0
- package/dist/migration/types.js.map +1 -0
- package/dist/utils.d.ts +1 -11
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +3 -129
- package/dist/utils.js.map +1 -1
- package/package.json +13 -4
- package/src/config.types.ts +131 -121
- package/src/default-config.ts +6 -0
- package/src/index.ts +26 -0
- package/src/migration/commands.ts +314 -0
- package/src/migration/examples.ts +471 -0
- package/src/migration/facade.ts +196 -0
- package/src/migration/migrator.ts +361 -0
- package/src/migration/strategies.ts +249 -0
- package/src/migration/types.ts +182 -0
- package/src/utils.ts +3 -145
package/dist/config.types.js
CHANGED
|
@@ -1,69 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Типы для конфигурации виджета чата
|
|
2
|
+
* Типы для конфигурации виджета чата (V2)
|
|
3
3
|
*/
|
|
4
|
-
|
|
5
|
-
export const DEFAULT_CONFIG = {
|
|
6
|
-
settings: {
|
|
7
|
-
widgetTitle: 'HyperShadow',
|
|
8
|
-
welcomeMessage: '🖖 Hi there — I’m your assistant for finding documents, tracking access, and making sense of your files. \n\nHow can I help?',
|
|
9
|
-
bgChat: 'rgba(47, 47, 49, 0.90)',
|
|
10
|
-
gapMessageLine: 12,
|
|
11
|
-
paddingChat: 8,
|
|
12
|
-
fontFamily: 'MacPaw Fixel',
|
|
13
|
-
borderRadius: 'lg',
|
|
14
|
-
launchView: 'closed',
|
|
15
|
-
letterSpacing: 0,
|
|
16
|
-
logo: '',
|
|
17
|
-
fontWeight: 400,
|
|
18
|
-
},
|
|
19
|
-
sections: {
|
|
20
|
-
top: {
|
|
21
|
-
params: {
|
|
22
|
-
size: 'md',
|
|
23
|
-
},
|
|
24
|
-
chipWidgetTitle: {
|
|
25
|
-
color: '#BEB6E9',
|
|
26
|
-
bgColor: '#5E4AC6',
|
|
27
|
-
},
|
|
28
|
-
btnClose: {
|
|
29
|
-
color: '#BBBBBD',
|
|
30
|
-
bgColor: '#2F2F31',
|
|
31
|
-
},
|
|
32
|
-
},
|
|
33
|
-
inside: {
|
|
34
|
-
params: {
|
|
35
|
-
size: 'md',
|
|
36
|
-
},
|
|
37
|
-
messageUser: {
|
|
38
|
-
color: '#F9F8F8',
|
|
39
|
-
bgColor: '#F8F8F933',
|
|
40
|
-
},
|
|
41
|
-
messageBot: {
|
|
42
|
-
color: '#fff',
|
|
43
|
-
bgColor: '#5E4AC6',
|
|
44
|
-
},
|
|
45
|
-
welcomeMessage: {
|
|
46
|
-
color: '#fff',
|
|
47
|
-
},
|
|
48
|
-
},
|
|
49
|
-
bottom: {
|
|
50
|
-
params: {
|
|
51
|
-
size: 'sm',
|
|
52
|
-
},
|
|
53
|
-
inputSend: {
|
|
54
|
-
color: '#EEECEC',
|
|
55
|
-
bgColor: '#1E1E1E',
|
|
56
|
-
},
|
|
57
|
-
btnSend: {
|
|
58
|
-
color: '#1E1E1E',
|
|
59
|
-
bgColor: 'rgba(255, 255, 255, 0.50)',
|
|
60
|
-
type: 'both',
|
|
61
|
-
},
|
|
62
|
-
activeBtn: {
|
|
63
|
-
color: '#fff',
|
|
64
|
-
bgColor: '#F8F8F933',
|
|
65
|
-
},
|
|
66
|
-
},
|
|
67
|
-
},
|
|
68
|
-
};
|
|
4
|
+
export { DEFAULT_CONFIG } from './default-config';
|
|
69
5
|
//# sourceMappingURL=config.types.js.map
|
package/dist/config.types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.types.js","sourceRoot":"","sources":["../src/config.types.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"config.types.js","sourceRoot":"","sources":["../src/config.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmMH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-config.d.ts","sourceRoot":"","sources":["../src/default-config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD,eAAO,MAAM,cAAc,EAAE,YAAiD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-config.js","sourceRoot":"","sources":["../src/default-config.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,2BAA2B,CAAA;AAG/C,MAAM,CAAC,MAAM,cAAc,GAAiB,OAAkC,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
export * from './config.types';
|
|
2
2
|
export * from './utils';
|
|
3
|
+
export { ConfigVersion, MigrationResult, MigrationContext, MigrationOptions, MigrationStrategy, MigrationStepResult, MigrationCommand, VersionDetector, ConfigValidator, ConfigSchema as MigrationConfigSchema, MigrationReport, MigrationLogger, ConfigV1, ConfigV2, ConfigByVersion, ConfigFactory, } from './migration/types';
|
|
4
|
+
export * from './migration/strategies';
|
|
5
|
+
export * from './migration/commands';
|
|
6
|
+
export * from './migration/migrator';
|
|
7
|
+
export * from './migration/facade';
|
|
8
|
+
export * from './migration/examples';
|
|
3
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AAIvB,OAAO,EACL,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,YAAY,IAAI,qBAAqB,EACrC,eAAe,EACf,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,aAAa,GACd,MAAM,mBAAmB,CAAA;AAC1B,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
export * from './config.types';
|
|
2
2
|
export * from './utils';
|
|
3
|
+
export * from './migration/strategies';
|
|
4
|
+
export * from './migration/commands';
|
|
5
|
+
export * from './migration/migrator';
|
|
6
|
+
export * from './migration/facade';
|
|
7
|
+
export * from './migration/examples';
|
|
3
8
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AAsBvB,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Команды для системы миграции конфигураций
|
|
3
|
+
*/
|
|
4
|
+
import { MigrationCommand, MigrationStepResult, ConfigVersion, VersionDetector, ConfigValidator } from './types';
|
|
5
|
+
/** Команда детекции версии конфигурации */
|
|
6
|
+
export declare class DetectVersionCommand implements MigrationCommand {
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
execute(config: any): MigrationStepResult;
|
|
10
|
+
}
|
|
11
|
+
/** Команда валидации конфигурации */
|
|
12
|
+
export declare class ValidateConfigCommand implements MigrationCommand {
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
execute(config: any, options: {
|
|
16
|
+
version: ConfigVersion;
|
|
17
|
+
}): MigrationStepResult;
|
|
18
|
+
}
|
|
19
|
+
/** Команда очистки конфигурации от неизвестных полей */
|
|
20
|
+
export declare class CleanConfigCommand implements MigrationCommand {
|
|
21
|
+
name: string;
|
|
22
|
+
description: string;
|
|
23
|
+
execute(config: any, options: {
|
|
24
|
+
version: ConfigVersion;
|
|
25
|
+
preserveUnknown?: boolean;
|
|
26
|
+
}): MigrationStepResult;
|
|
27
|
+
private cleanConfigForVersion;
|
|
28
|
+
}
|
|
29
|
+
/** Команда создания резервной копии */
|
|
30
|
+
export declare class BackupConfigCommand implements MigrationCommand {
|
|
31
|
+
name: string;
|
|
32
|
+
description: string;
|
|
33
|
+
execute(config: any, options?: {
|
|
34
|
+
timestamp?: boolean;
|
|
35
|
+
}): MigrationStepResult;
|
|
36
|
+
}
|
|
37
|
+
/** Дефолтный детектор версий */
|
|
38
|
+
export declare class DefaultVersionDetector implements VersionDetector {
|
|
39
|
+
detect(config: any): ConfigVersion | null;
|
|
40
|
+
}
|
|
41
|
+
/** Дефолтный валидатор конфигураций */
|
|
42
|
+
export declare class DefaultConfigValidator implements ConfigValidator {
|
|
43
|
+
validate(config: any, version: ConfigVersion): {
|
|
44
|
+
isValid: boolean;
|
|
45
|
+
errors: string[];
|
|
46
|
+
warnings: string[];
|
|
47
|
+
};
|
|
48
|
+
private validateV1;
|
|
49
|
+
private validateV2;
|
|
50
|
+
private getNestedValue;
|
|
51
|
+
}
|
|
52
|
+
/** Фабрика команд */
|
|
53
|
+
export declare class CommandFactory {
|
|
54
|
+
private static commands;
|
|
55
|
+
static createCommand(name: string): MigrationCommand | null;
|
|
56
|
+
static getAllCommands(): string[];
|
|
57
|
+
static registerCommand(name: string, factory: () => MigrationCommand): void;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/migration/commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,eAAe,EAChB,MAAM,SAAS,CAAA;AAGhB,2CAA2C;AAC3C,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,IAAI,SAAkB;IACtB,WAAW,SAAmC;IAE9C,OAAO,CAAC,MAAM,EAAE,GAAG,GAAG,mBAAmB;CA8B1C;AAED,qCAAqC;AACrC,qBAAa,qBAAsB,YAAW,gBAAgB;IAC5D,IAAI,SAAmB;IACvB,WAAW,SAAiD;IAE5D,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE;QAAE,OAAO,EAAE,aAAa,CAAA;KAAE,GAAG,mBAAmB;CAqB/E;AAED,wDAAwD;AACxD,qBAAa,kBAAmB,YAAW,gBAAgB;IACzD,IAAI,SAAgB;IACpB,WAAW,SAAmE;IAE9E,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,mBAAmB;IAgCzG,OAAO,CAAC,qBAAqB;CAK9B;AAED,uCAAuC;AACvC,qBAAa,mBAAoB,YAAW,gBAAgB;IAC1D,IAAI,SAAiB;IACrB,WAAW,SAAyC;IAEpD,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,mBAAmB;CAyB7E;AAED,gCAAgC;AAChC,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,aAAa,GAAG,IAAI;CA6C1C;AAED,uCAAuC;AACvC,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE;IAgDzG,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,UAAU;IAmBlB,OAAO,CAAC,cAAc;CAGvB;AAED,qBAAqB;AACrB,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAKrB;IAEF,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAK3D,MAAM,CAAC,cAAc,IAAI,MAAM,EAAE;IAIjC,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,gBAAgB,GAAG,IAAI;CAG5E"}
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Команды для системы миграции конфигураций
|
|
3
|
+
*/
|
|
4
|
+
// Команды для системы миграции конфигураций
|
|
5
|
+
/** Команда детекции версии конфигурации */
|
|
6
|
+
export class DetectVersionCommand {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.name = 'DetectVersion';
|
|
9
|
+
this.description = 'Определяет версию конфигурации';
|
|
10
|
+
}
|
|
11
|
+
execute(config) {
|
|
12
|
+
try {
|
|
13
|
+
const detector = new DefaultVersionDetector();
|
|
14
|
+
const version = detector.detect(config);
|
|
15
|
+
if (!version) {
|
|
16
|
+
return {
|
|
17
|
+
success: false,
|
|
18
|
+
errors: ['Не удалось определить версию конфигурации'],
|
|
19
|
+
warnings: [],
|
|
20
|
+
modified: false
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
success: true,
|
|
25
|
+
data: { version, config },
|
|
26
|
+
errors: [],
|
|
27
|
+
warnings: [],
|
|
28
|
+
modified: false
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
return {
|
|
33
|
+
success: false,
|
|
34
|
+
errors: [`Ошибка при детекции версии: ${error}`],
|
|
35
|
+
warnings: [],
|
|
36
|
+
modified: false
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/** Команда валидации конфигурации */
|
|
42
|
+
export class ValidateConfigCommand {
|
|
43
|
+
constructor() {
|
|
44
|
+
this.name = 'ValidateConfig';
|
|
45
|
+
this.description = 'Валидирует конфигурацию для указанной версии';
|
|
46
|
+
}
|
|
47
|
+
execute(config, options) {
|
|
48
|
+
try {
|
|
49
|
+
const validator = new DefaultConfigValidator();
|
|
50
|
+
const result = validator.validate(config, options.version);
|
|
51
|
+
return {
|
|
52
|
+
success: result.isValid,
|
|
53
|
+
data: { validationResult: result, config },
|
|
54
|
+
errors: result.errors,
|
|
55
|
+
warnings: result.warnings,
|
|
56
|
+
modified: false
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
return {
|
|
61
|
+
success: false,
|
|
62
|
+
errors: [`Ошибка при валидации: ${error}`],
|
|
63
|
+
warnings: [],
|
|
64
|
+
modified: false
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/** Команда очистки конфигурации от неизвестных полей */
|
|
70
|
+
export class CleanConfigCommand {
|
|
71
|
+
constructor() {
|
|
72
|
+
this.name = 'CleanConfig';
|
|
73
|
+
this.description = 'Очищает конфигурацию от неизвестных полей для указанной версии';
|
|
74
|
+
}
|
|
75
|
+
execute(config, options) {
|
|
76
|
+
try {
|
|
77
|
+
if (options.preserveUnknown) {
|
|
78
|
+
return {
|
|
79
|
+
success: true,
|
|
80
|
+
data: config,
|
|
81
|
+
errors: [],
|
|
82
|
+
warnings: ['Очистка пропущена - preserveUnknown: true'],
|
|
83
|
+
modified: false
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
// Здесь можно реализовать логику очистки на основе схем
|
|
87
|
+
const cleanedConfig = this.cleanConfigForVersion(config, options.version);
|
|
88
|
+
return {
|
|
89
|
+
success: true,
|
|
90
|
+
data: cleanedConfig,
|
|
91
|
+
errors: [],
|
|
92
|
+
warnings: ['Конфигурация очищена от неизвестных полей'],
|
|
93
|
+
modified: true
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
return {
|
|
98
|
+
success: false,
|
|
99
|
+
errors: [`Ошибка при очистке конфигурации: ${error}`],
|
|
100
|
+
warnings: [],
|
|
101
|
+
modified: false
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
cleanConfigForVersion(config, _version) {
|
|
106
|
+
// Базовая реализация - возвращаем как есть
|
|
107
|
+
// В реальном проекте здесь была бы логика очистки на основе схем
|
|
108
|
+
return { ...config };
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/** Команда создания резервной копии */
|
|
112
|
+
export class BackupConfigCommand {
|
|
113
|
+
constructor() {
|
|
114
|
+
this.name = 'BackupConfig';
|
|
115
|
+
this.description = 'Создает резервную копию конфигурации';
|
|
116
|
+
}
|
|
117
|
+
execute(config, options) {
|
|
118
|
+
try {
|
|
119
|
+
const timestamp = options?.timestamp ? Date.now() : undefined;
|
|
120
|
+
const backup = {
|
|
121
|
+
original: JSON.parse(JSON.stringify(config)),
|
|
122
|
+
timestamp: timestamp || Date.now(),
|
|
123
|
+
version: new DefaultVersionDetector().detect(config)
|
|
124
|
+
};
|
|
125
|
+
return {
|
|
126
|
+
success: true,
|
|
127
|
+
data: { backup, config },
|
|
128
|
+
errors: [],
|
|
129
|
+
warnings: [],
|
|
130
|
+
modified: false
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
return {
|
|
135
|
+
success: false,
|
|
136
|
+
errors: [`Ошибка при создании резервной копии: ${error}`],
|
|
137
|
+
warnings: [],
|
|
138
|
+
modified: false
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/** Дефолтный детектор версий */
|
|
144
|
+
export class DefaultVersionDetector {
|
|
145
|
+
detect(config) {
|
|
146
|
+
try {
|
|
147
|
+
// Проверяем структуру для определения версии
|
|
148
|
+
if (!config || !config.settings || !config.sections) {
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
// V2 признаки: наличие новых полей
|
|
152
|
+
const hasV2Features = [
|
|
153
|
+
config.settings.loader !== undefined,
|
|
154
|
+
config.settings.buttonStyle !== undefined,
|
|
155
|
+
config.settings.buttonType !== undefined,
|
|
156
|
+
config.sections.top.params?.chipStyle !== undefined,
|
|
157
|
+
config.sections.inside.messageUser?.bgType !== undefined,
|
|
158
|
+
config.sections.inside.aprooveButton !== undefined,
|
|
159
|
+
config.sections.bottom.inputSend?.borderStyle !== undefined,
|
|
160
|
+
config.sections.bottom.warningAlert !== undefined,
|
|
161
|
+
config.sections.bottom.disclaimer !== undefined
|
|
162
|
+
];
|
|
163
|
+
// Если есть хотя бы 3 признака V2, считаем это V2
|
|
164
|
+
const v2FeaturesCount = hasV2Features.filter(Boolean).length;
|
|
165
|
+
if (v2FeaturesCount >= 3) {
|
|
166
|
+
return '2.0';
|
|
167
|
+
}
|
|
168
|
+
// Базовая проверка на V1
|
|
169
|
+
const hasV1Structure = [
|
|
170
|
+
config.settings.widgetTitle !== undefined,
|
|
171
|
+
config.settings.bgChat !== undefined,
|
|
172
|
+
config.sections.top !== undefined,
|
|
173
|
+
config.sections.inside !== undefined,
|
|
174
|
+
config.sections.bottom !== undefined
|
|
175
|
+
].every(Boolean);
|
|
176
|
+
if (hasV1Structure) {
|
|
177
|
+
return '1.0';
|
|
178
|
+
}
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
console.error('Ошибка при детекции версии:', error);
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/** Дефолтный валидатор конфигураций */
|
|
188
|
+
export class DefaultConfigValidator {
|
|
189
|
+
validate(config, version) {
|
|
190
|
+
const errors = [];
|
|
191
|
+
const warnings = [];
|
|
192
|
+
try {
|
|
193
|
+
if (!config) {
|
|
194
|
+
errors.push('Конфигурация не может быть пустой');
|
|
195
|
+
return { isValid: false, errors, warnings };
|
|
196
|
+
}
|
|
197
|
+
// Базовая валидация структуры
|
|
198
|
+
if (!config.settings) {
|
|
199
|
+
errors.push('Отсутствует секция settings');
|
|
200
|
+
}
|
|
201
|
+
if (!config.sections) {
|
|
202
|
+
errors.push('Отсутствует секция sections');
|
|
203
|
+
}
|
|
204
|
+
if (config.sections) {
|
|
205
|
+
if (!config.sections.top)
|
|
206
|
+
errors.push('Отсутствует секция sections.top');
|
|
207
|
+
if (!config.sections.inside)
|
|
208
|
+
errors.push('Отсутствует секция sections.inside');
|
|
209
|
+
if (!config.sections.bottom)
|
|
210
|
+
errors.push('Отсутствует секция sections.bottom');
|
|
211
|
+
}
|
|
212
|
+
// Версионная валидация
|
|
213
|
+
switch (version) {
|
|
214
|
+
case '1.0':
|
|
215
|
+
this.validateV1(config, errors, warnings);
|
|
216
|
+
break;
|
|
217
|
+
case '2.0':
|
|
218
|
+
this.validateV2(config, errors, warnings);
|
|
219
|
+
break;
|
|
220
|
+
default:
|
|
221
|
+
warnings.push(`Валидация для версии ${version} не реализована`);
|
|
222
|
+
}
|
|
223
|
+
return {
|
|
224
|
+
isValid: errors.length === 0,
|
|
225
|
+
errors,
|
|
226
|
+
warnings
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
errors.push(`Ошибка при валидации: ${error}`);
|
|
231
|
+
return { isValid: false, errors, warnings };
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
validateV1(config, errors, _warnings) {
|
|
235
|
+
// Проверяем обязательные поля V1
|
|
236
|
+
const requiredV1Fields = [
|
|
237
|
+
'settings.widgetTitle',
|
|
238
|
+
'settings.welcomeMessage',
|
|
239
|
+
'settings.bgChat'
|
|
240
|
+
];
|
|
241
|
+
for (const field of requiredV1Fields) {
|
|
242
|
+
if (!this.getNestedValue(config, field)) {
|
|
243
|
+
errors.push(`Отсутствует обязательное поле: ${field}`);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
validateV2(config, errors, warnings) {
|
|
248
|
+
// Сначала валидируем как V1
|
|
249
|
+
this.validateV1(config, errors, warnings);
|
|
250
|
+
// Дополнительные проверки для V2
|
|
251
|
+
const expectedV2Fields = [
|
|
252
|
+
'settings.loader',
|
|
253
|
+
'settings.buttonStyle',
|
|
254
|
+
'sections.inside.aprooveButton',
|
|
255
|
+
'sections.bottom.warningAlert'
|
|
256
|
+
];
|
|
257
|
+
for (const field of expectedV2Fields) {
|
|
258
|
+
if (!this.getNestedValue(config, field)) {
|
|
259
|
+
warnings.push(`Рекомендуется добавить поле V2: ${field}`);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
getNestedValue(obj, path) {
|
|
264
|
+
return path.split('.').reduce((current, key) => current?.[key], obj);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
/** Фабрика команд */
|
|
268
|
+
export class CommandFactory {
|
|
269
|
+
static createCommand(name) {
|
|
270
|
+
const factory = this.commands.get(name);
|
|
271
|
+
return factory ? factory() : null;
|
|
272
|
+
}
|
|
273
|
+
static getAllCommands() {
|
|
274
|
+
return Array.from(this.commands.keys());
|
|
275
|
+
}
|
|
276
|
+
static registerCommand(name, factory) {
|
|
277
|
+
this.commands.set(name, factory);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
CommandFactory.commands = new Map([
|
|
281
|
+
['DetectVersion', () => new DetectVersionCommand()],
|
|
282
|
+
['ValidateConfig', () => new ValidateConfigCommand()],
|
|
283
|
+
['CleanConfig', () => new CleanConfigCommand()],
|
|
284
|
+
['BackupConfig', () => new BackupConfigCommand()]
|
|
285
|
+
]);
|
|
286
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/migration/commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,4CAA4C;AAE5C,2CAA2C;AAC3C,MAAM,OAAO,oBAAoB;IAAjC;QACE,SAAI,GAAG,eAAe,CAAA;QACtB,gBAAW,GAAG,gCAAgC,CAAA;IAgChD,CAAC;IA9BC,OAAO,CAAC,MAAW;QACjB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,sBAAsB,EAAE,CAAA;YAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAEvC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,CAAC,2CAA2C,CAAC;oBACrD,QAAQ,EAAE,EAAE;oBACZ,QAAQ,EAAE,KAAK;iBAChB,CAAA;YACH,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;gBACzB,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,KAAK;aAChB,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,CAAC,+BAA+B,KAAK,EAAE,CAAC;gBAChD,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,KAAK;aAChB,CAAA;QACH,CAAC;IACH,CAAC;CACF;AAED,qCAAqC;AACrC,MAAM,OAAO,qBAAqB;IAAlC;QACE,SAAI,GAAG,gBAAgB,CAAA;QACvB,gBAAW,GAAG,8CAA8C,CAAA;IAuB9D,CAAC;IArBC,OAAO,CAAC,MAAW,EAAE,OAAmC;QACtD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,sBAAsB,EAAE,CAAA;YAC9C,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;YAE1D,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,IAAI,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE;gBAC1C,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAE,KAAK;aAChB,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,CAAC,yBAAyB,KAAK,EAAE,CAAC;gBAC1C,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,KAAK;aAChB,CAAA;QACH,CAAC;IACH,CAAC;CACF;AAED,wDAAwD;AACxD,MAAM,OAAO,kBAAkB;IAA/B;QACE,SAAI,GAAG,aAAa,CAAA;QACpB,gBAAW,GAAG,gEAAgE,CAAA;IAuChF,CAAC;IArCC,OAAO,CAAC,MAAW,EAAE,OAA8D;QACjF,IAAI,CAAC;YACH,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;gBAC5B,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE,MAAM;oBACZ,MAAM,EAAE,EAAE;oBACV,QAAQ,EAAE,CAAC,2CAA2C,CAAC;oBACvD,QAAQ,EAAE,KAAK;iBAChB,CAAA;YACH,CAAC;YAED,wDAAwD;YACxD,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;YAEzE,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE,CAAC,2CAA2C,CAAC;gBACvD,QAAQ,EAAE,IAAI;aACf,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,CAAC,oCAAoC,KAAK,EAAE,CAAC;gBACrD,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,KAAK;aAChB,CAAA;QACH,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,MAAW,EAAE,QAAuB;QAChE,2CAA2C;QAC3C,iEAAiE;QACjE,OAAO,EAAE,GAAG,MAAM,EAAE,CAAA;IACtB,CAAC;CACF;AAED,uCAAuC;AACvC,MAAM,OAAO,mBAAmB;IAAhC;QACE,SAAI,GAAG,cAAc,CAAA;QACrB,gBAAW,GAAG,sCAAsC,CAAA;IA2BtD,CAAC;IAzBC,OAAO,CAAC,MAAW,EAAE,OAAiC;QACpD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;YAC7D,MAAM,MAAM,GAAG;gBACb,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC5C,SAAS,EAAE,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE;gBAClC,OAAO,EAAE,IAAI,sBAAsB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;aACrD,CAAA;YAED,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;gBACxB,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,KAAK;aAChB,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,CAAC,wCAAwC,KAAK,EAAE,CAAC;gBACzD,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,KAAK;aAChB,CAAA;QACH,CAAC;IACH,CAAC;CACF;AAED,gCAAgC;AAChC,MAAM,OAAO,sBAAsB;IACjC,MAAM,CAAC,MAAW;QAChB,IAAI,CAAC;YACH,6CAA6C;YAC7C,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpD,OAAO,IAAI,CAAA;YACb,CAAC;YAED,mCAAmC;YACnC,MAAM,aAAa,GAAG;gBACpB,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS;gBACpC,MAAM,CAAC,QAAQ,CAAC,WAAW,KAAK,SAAS;gBACzC,MAAM,CAAC,QAAQ,CAAC,UAAU,KAAK,SAAS;gBACxC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,KAAK,SAAS;gBACnD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,KAAK,SAAS;gBACxD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS;gBAClD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,KAAK,SAAS;gBAC3D,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS;gBACjD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS;aAChD,CAAA;YAED,kDAAkD;YAClD,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAA;YAC5D,IAAI,eAAe,IAAI,CAAC,EAAE,CAAC;gBACzB,OAAO,KAAK,CAAA;YACd,CAAC;YAED,yBAAyB;YACzB,MAAM,cAAc,GAAG;gBACrB,MAAM,CAAC,QAAQ,CAAC,WAAW,KAAK,SAAS;gBACzC,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS;gBACpC,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,SAAS;gBACjC,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS;gBACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS;aACrC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAEhB,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,KAAK,CAAA;YACd,CAAC;YAED,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAA;YACnD,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;CACF;AAED,uCAAuC;AACvC,MAAM,OAAO,sBAAsB;IACjC,QAAQ,CAAC,MAAW,EAAE,OAAsB;QAC1C,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,MAAM,QAAQ,GAAa,EAAE,CAAA;QAE7B,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAA;gBAChD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;YAC7C,CAAC;YAED,8BAA8B;YAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAA;YAC5C,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAA;YAC5C,CAAC;YAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG;oBAAE,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;gBACxE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM;oBAAE,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;gBAC9E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM;oBAAE,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;YAChF,CAAC;YAED,uBAAuB;YACvB,QAAQ,OAAO,EAAE,CAAC;gBAChB,KAAK,KAAK;oBACR,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;oBACzC,MAAK;gBACP,KAAK,KAAK;oBACR,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;oBACzC,MAAK;gBACP;oBACE,QAAQ,CAAC,IAAI,CAAC,wBAAwB,OAAO,iBAAiB,CAAC,CAAA;YACnE,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;gBAC5B,MAAM;gBACN,QAAQ;aACT,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAA;YAC7C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;QAC7C,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,MAAW,EAAE,MAAgB,EAAE,SAAmB;QACnE,iCAAiC;QACjC,MAAM,gBAAgB,GAAG;YACvB,sBAAsB;YACtB,yBAAyB;YACzB,iBAAiB;SAClB,CAAA;QAED,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;gBACxC,MAAM,CAAC,IAAI,CAAC,kCAAkC,KAAK,EAAE,CAAC,CAAA;YACxD,CAAC;QACH,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,MAAW,EAAE,MAAgB,EAAE,QAAkB;QAClE,4BAA4B;QAC5B,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;QAEzC,iCAAiC;QACjC,MAAM,gBAAgB,GAAG;YACvB,iBAAiB;YACjB,sBAAsB;YACtB,+BAA+B;YAC/B,8BAA8B;SAC/B,CAAA;QAED,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;gBACxC,QAAQ,CAAC,IAAI,CAAC,mCAAmC,KAAK,EAAE,CAAC,CAAA;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,GAAQ,EAAE,IAAY;QAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA;IACtE,CAAC;CACF;AAED,qBAAqB;AACrB,MAAM,OAAO,cAAc;IAQzB,MAAM,CAAC,aAAa,CAAC,IAAY;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACvC,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IACnC,CAAC;IAED,MAAM,CAAC,cAAc;QACnB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IACzC,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,IAAY,EAAE,OAA+B;QAClE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAClC,CAAC;;AAlBc,uBAAQ,GAAG,IAAI,GAAG,CAAiC;IAChE,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,oBAAoB,EAAE,CAAC;IACnD,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,qBAAqB,EAAE,CAAC;IACrD,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,kBAAkB,EAAE,CAAC;IAC/C,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,mBAAmB,EAAE,CAAC;CAClD,CAAC,CAAA"}
|