@purpleschool/rugpt-lib-common 0.0.66 → 0.0.68
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/.githooks/pre-commit +3 -0
- package/build/errors/errors.js +1 -61
- package/errors/errors.ts +2 -68
- package/package.json +2 -1
- package/scripts/check-errors-structure.js +149 -0
package/build/errors/errors.js
CHANGED
|
@@ -536,7 +536,7 @@ exports.ERRORS = {
|
|
|
536
536
|
RUNTIME_PARAMS_ERROR: {
|
|
537
537
|
code: "CANVAS_NODE.RUNTIME_PARAMS_ERROR",
|
|
538
538
|
httpCode: 400,
|
|
539
|
-
message: "
|
|
539
|
+
message: "Часть параметров невалидна, отсутствует или не может быть использована в рантайме.",
|
|
540
540
|
},
|
|
541
541
|
HANDLER_NOT_REGISTERED: {
|
|
542
542
|
code: "CANVAS_NODE.HANDLER_NOT_REGISTERED",
|
|
@@ -5305,66 +5305,6 @@ exports.ERRORS = {
|
|
|
5305
5305
|
httpCode: 500,
|
|
5306
5306
|
},
|
|
5307
5307
|
},
|
|
5308
|
-
INTERIOR_DESIGN_CONFIG_ERROR: {
|
|
5309
|
-
code: "A569",
|
|
5310
|
-
message: "Произошла ошибка при получении конфигурации инструмента для редактирования дизайна интерьера",
|
|
5311
|
-
httpCode: 500,
|
|
5312
|
-
},
|
|
5313
|
-
INTERIOR_DESIGN_SEND_REQUEST_ERROR: {
|
|
5314
|
-
code: "A570",
|
|
5315
|
-
message: "Произошла ошибка при отправке запроса на редактирование дизайна интерьера",
|
|
5316
|
-
httpCode: 500,
|
|
5317
|
-
},
|
|
5318
|
-
INTERIOR_DESIGN_MODEL_NOT_FOUND: {
|
|
5319
|
-
code: "A571",
|
|
5320
|
-
message: "Не удалось найти указанную модель для редактирования дизайна интерьера",
|
|
5321
|
-
httpCode: 400,
|
|
5322
|
-
},
|
|
5323
|
-
INTERIOR_DESIGN_MAX_SYMBOLS_EXCEEDED: {
|
|
5324
|
-
code: "A572",
|
|
5325
|
-
message: "Превышена максимальная количество символов",
|
|
5326
|
-
httpCode: 400,
|
|
5327
|
-
},
|
|
5328
|
-
INTERIOR_DESIGN_SET_REACTION_ERROR: {
|
|
5329
|
-
code: "A573",
|
|
5330
|
-
message: "Произошла ошибка при установке оценке сообщения",
|
|
5331
|
-
httpCode: 500,
|
|
5332
|
-
},
|
|
5333
|
-
INTERIOR_DESIGN_UPDATE_TITLE_ERROR: {
|
|
5334
|
-
code: "A574",
|
|
5335
|
-
message: "Произошла ошибка при обновлении названия чата",
|
|
5336
|
-
httpCode: 500,
|
|
5337
|
-
},
|
|
5338
|
-
INTERIOR_DESIGN_JOB_DELETE_ERROR: {
|
|
5339
|
-
code: "A575",
|
|
5340
|
-
message: "Произошла ошибка при удалении сообщения",
|
|
5341
|
-
httpCode: 500,
|
|
5342
|
-
},
|
|
5343
|
-
INTERIOR_DESIGN_RETRY_REQUEST_ERROR: {
|
|
5344
|
-
code: "A576",
|
|
5345
|
-
message: "Произошла ошибка при повторном запросе на редактирование дизайна интерьера",
|
|
5346
|
-
httpCode: 500,
|
|
5347
|
-
},
|
|
5348
|
-
INTERIOR_DESIGN_MODEL_NOT_AVAILABLE: {
|
|
5349
|
-
code: "A577",
|
|
5350
|
-
message: "Данная модель для редактирования дизайна интерьера недоступна",
|
|
5351
|
-
httpCode: 401,
|
|
5352
|
-
},
|
|
5353
|
-
INTERIOR_DESIGN_MODEL_INACTIVE: {
|
|
5354
|
-
code: "A578",
|
|
5355
|
-
message: "Модель редактирования дизайна интерьера архивирована и недоступна для пользования",
|
|
5356
|
-
httpCode: 403,
|
|
5357
|
-
},
|
|
5358
|
-
INTERIOR_DESIGN_MODEL_FIND_ERROR: {
|
|
5359
|
-
code: "A579",
|
|
5360
|
-
message: "Произошла ошибка при получении модели для редактирования дизайна интерьера",
|
|
5361
|
-
httpCode: 500,
|
|
5362
|
-
},
|
|
5363
|
-
INTERIOR_DESIGN_PRICE_ERROR: {
|
|
5364
|
-
code: "A580",
|
|
5365
|
-
message: "Произошла ошибка при получении цены для редактирования дизайна интерьера",
|
|
5366
|
-
httpCode: 500,
|
|
5367
|
-
},
|
|
5368
5308
|
WATERMARK: {
|
|
5369
5309
|
APPLY_ERROR: {
|
|
5370
5310
|
code: "WATERMARK.APPLY_ERROR",
|
package/errors/errors.ts
CHANGED
|
@@ -544,7 +544,8 @@ export const ERRORS = {
|
|
|
544
544
|
RUNTIME_PARAMS_ERROR: {
|
|
545
545
|
code: "CANVAS_NODE.RUNTIME_PARAMS_ERROR",
|
|
546
546
|
httpCode: 400,
|
|
547
|
-
message:
|
|
547
|
+
message:
|
|
548
|
+
"Часть параметров невалидна, отсутствует или не может быть использована в рантайме.",
|
|
548
549
|
},
|
|
549
550
|
HANDLER_NOT_REGISTERED: {
|
|
550
551
|
code: "CANVAS_NODE.HANDLER_NOT_REGISTERED",
|
|
@@ -5454,73 +5455,6 @@ export const ERRORS = {
|
|
|
5454
5455
|
httpCode: 500,
|
|
5455
5456
|
},
|
|
5456
5457
|
},
|
|
5457
|
-
INTERIOR_DESIGN_CONFIG_ERROR: {
|
|
5458
|
-
code: "A569",
|
|
5459
|
-
message:
|
|
5460
|
-
"Произошла ошибка при получении конфигурации инструмента для редактирования дизайна интерьера",
|
|
5461
|
-
httpCode: 500,
|
|
5462
|
-
},
|
|
5463
|
-
INTERIOR_DESIGN_SEND_REQUEST_ERROR: {
|
|
5464
|
-
code: "A570",
|
|
5465
|
-
message:
|
|
5466
|
-
"Произошла ошибка при отправке запроса на редактирование дизайна интерьера",
|
|
5467
|
-
httpCode: 500,
|
|
5468
|
-
},
|
|
5469
|
-
INTERIOR_DESIGN_MODEL_NOT_FOUND: {
|
|
5470
|
-
code: "A571",
|
|
5471
|
-
message:
|
|
5472
|
-
"Не удалось найти указанную модель для редактирования дизайна интерьера",
|
|
5473
|
-
httpCode: 400,
|
|
5474
|
-
},
|
|
5475
|
-
INTERIOR_DESIGN_MAX_SYMBOLS_EXCEEDED: {
|
|
5476
|
-
code: "A572",
|
|
5477
|
-
message: "Превышена максимальная количество символов",
|
|
5478
|
-
httpCode: 400,
|
|
5479
|
-
},
|
|
5480
|
-
INTERIOR_DESIGN_SET_REACTION_ERROR: {
|
|
5481
|
-
code: "A573",
|
|
5482
|
-
message: "Произошла ошибка при установке оценке сообщения",
|
|
5483
|
-
httpCode: 500,
|
|
5484
|
-
},
|
|
5485
|
-
INTERIOR_DESIGN_UPDATE_TITLE_ERROR: {
|
|
5486
|
-
code: "A574",
|
|
5487
|
-
message: "Произошла ошибка при обновлении названия чата",
|
|
5488
|
-
httpCode: 500,
|
|
5489
|
-
},
|
|
5490
|
-
INTERIOR_DESIGN_JOB_DELETE_ERROR: {
|
|
5491
|
-
code: "A575",
|
|
5492
|
-
message: "Произошла ошибка при удалении сообщения",
|
|
5493
|
-
httpCode: 500,
|
|
5494
|
-
},
|
|
5495
|
-
INTERIOR_DESIGN_RETRY_REQUEST_ERROR: {
|
|
5496
|
-
code: "A576",
|
|
5497
|
-
message:
|
|
5498
|
-
"Произошла ошибка при повторном запросе на редактирование дизайна интерьера",
|
|
5499
|
-
httpCode: 500,
|
|
5500
|
-
},
|
|
5501
|
-
INTERIOR_DESIGN_MODEL_NOT_AVAILABLE: {
|
|
5502
|
-
code: "A577",
|
|
5503
|
-
message: "Данная модель для редактирования дизайна интерьера недоступна",
|
|
5504
|
-
httpCode: 401,
|
|
5505
|
-
},
|
|
5506
|
-
INTERIOR_DESIGN_MODEL_INACTIVE: {
|
|
5507
|
-
code: "A578",
|
|
5508
|
-
message:
|
|
5509
|
-
"Модель редактирования дизайна интерьера архивирована и недоступна для пользования",
|
|
5510
|
-
httpCode: 403,
|
|
5511
|
-
},
|
|
5512
|
-
INTERIOR_DESIGN_MODEL_FIND_ERROR: {
|
|
5513
|
-
code: "A579",
|
|
5514
|
-
message:
|
|
5515
|
-
"Произошла ошибка при получении модели для редактирования дизайна интерьера",
|
|
5516
|
-
httpCode: 500,
|
|
5517
|
-
},
|
|
5518
|
-
INTERIOR_DESIGN_PRICE_ERROR: {
|
|
5519
|
-
code: "A580",
|
|
5520
|
-
message:
|
|
5521
|
-
"Произошла ошибка при получении цены для редактирования дизайна интерьера",
|
|
5522
|
-
httpCode: 500,
|
|
5523
|
-
},
|
|
5524
5458
|
WATERMARK: {
|
|
5525
5459
|
APPLY_ERROR: {
|
|
5526
5460
|
code: "WATERMARK.APPLY_ERROR",
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@purpleschool/rugpt-lib-common",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.68",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
7
7
|
"scripts": {
|
|
8
|
+
"check:errors": "node scripts/check-errors-structure.js",
|
|
8
9
|
"prepublish": "rm -rf build && tsc",
|
|
9
10
|
"build": "tsc"
|
|
10
11
|
},
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
const fs = require("fs");
|
|
2
|
+
const path = require("path");
|
|
3
|
+
const { execFileSync } = require("child_process");
|
|
4
|
+
const ts = require("typescript");
|
|
5
|
+
|
|
6
|
+
const repoRoot = path.resolve(__dirname, "..");
|
|
7
|
+
const errorsPath = path.join(repoRoot, "errors", "errors.ts");
|
|
8
|
+
const relativeErrorsPath = "errors/errors.ts";
|
|
9
|
+
const useStaged = process.argv.includes("--staged");
|
|
10
|
+
|
|
11
|
+
function hasStagedErrorsFile() {
|
|
12
|
+
try {
|
|
13
|
+
const stagedFiles = execFileSync(
|
|
14
|
+
"git",
|
|
15
|
+
["diff", "--cached", "--name-only", "--diff-filter=ACMR", "--", relativeErrorsPath],
|
|
16
|
+
{ cwd: repoRoot, encoding: "utf8" }
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
return stagedFiles
|
|
20
|
+
.split(/\r?\n/)
|
|
21
|
+
.map((file) => file.trim())
|
|
22
|
+
.includes(relativeErrorsPath);
|
|
23
|
+
} catch {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function readErrorsSource() {
|
|
29
|
+
if (useStaged) {
|
|
30
|
+
if (!hasStagedErrorsFile()) {
|
|
31
|
+
process.exit(0);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return execFileSync("git", ["show", `:${relativeErrorsPath}`], {
|
|
35
|
+
cwd: repoRoot,
|
|
36
|
+
encoding: "utf8",
|
|
37
|
+
maxBuffer: 20 * 1024 * 1024,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return fs.readFileSync(errorsPath, "utf8");
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function getPropertyName(name) {
|
|
45
|
+
if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)) {
|
|
46
|
+
return name.text;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return name.getText();
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function getObjectPropertyNames(objectLiteral) {
|
|
53
|
+
return new Set(
|
|
54
|
+
objectLiteral.properties
|
|
55
|
+
.filter(ts.isPropertyAssignment)
|
|
56
|
+
.map((property) => getPropertyName(property.name))
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function isErrorObject(objectLiteral) {
|
|
61
|
+
const propertyNames = getObjectPropertyNames(objectLiteral);
|
|
62
|
+
|
|
63
|
+
return (
|
|
64
|
+
propertyNames.has("code") &&
|
|
65
|
+
propertyNames.has("message") &&
|
|
66
|
+
propertyNames.has("httpCode")
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function findErrorsObject(sourceFile) {
|
|
71
|
+
let errorsObject = null;
|
|
72
|
+
|
|
73
|
+
function visit(node) {
|
|
74
|
+
if (
|
|
75
|
+
ts.isVariableDeclaration(node) &&
|
|
76
|
+
ts.isIdentifier(node.name) &&
|
|
77
|
+
node.name.text === "ERRORS" &&
|
|
78
|
+
node.initializer &&
|
|
79
|
+
ts.isObjectLiteralExpression(node.initializer)
|
|
80
|
+
) {
|
|
81
|
+
errorsObject = node.initializer;
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
ts.forEachChild(node, visit);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
visit(sourceFile);
|
|
89
|
+
return errorsObject;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const sourceText = readErrorsSource();
|
|
93
|
+
const sourceFile = ts.createSourceFile(
|
|
94
|
+
relativeErrorsPath,
|
|
95
|
+
sourceText,
|
|
96
|
+
ts.ScriptTarget.Latest,
|
|
97
|
+
true,
|
|
98
|
+
ts.ScriptKind.TS
|
|
99
|
+
);
|
|
100
|
+
const errorsObject = findErrorsObject(sourceFile);
|
|
101
|
+
|
|
102
|
+
if (!errorsObject) {
|
|
103
|
+
console.error("Cannot find top-level ERRORS object in errors/errors.ts");
|
|
104
|
+
process.exit(1);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const topLevelErrors = errorsObject.properties
|
|
108
|
+
.filter(ts.isPropertyAssignment)
|
|
109
|
+
.filter((property) => ts.isObjectLiteralExpression(property.initializer))
|
|
110
|
+
.filter((property) => isErrorObject(property.initializer))
|
|
111
|
+
.map((property) => {
|
|
112
|
+
const position = sourceFile.getLineAndCharacterOfPosition(property.name.getStart(sourceFile));
|
|
113
|
+
const name = getPropertyName(property.name);
|
|
114
|
+
const codeProperty = property.initializer.properties.find(
|
|
115
|
+
(nestedProperty) =>
|
|
116
|
+
ts.isPropertyAssignment(nestedProperty) &&
|
|
117
|
+
getPropertyName(nestedProperty.name) === "code"
|
|
118
|
+
);
|
|
119
|
+
const code =
|
|
120
|
+
codeProperty &&
|
|
121
|
+
ts.isPropertyAssignment(codeProperty) &&
|
|
122
|
+
ts.isStringLiteralLike(codeProperty.initializer)
|
|
123
|
+
? codeProperty.initializer.text
|
|
124
|
+
: null;
|
|
125
|
+
|
|
126
|
+
return {
|
|
127
|
+
name,
|
|
128
|
+
code,
|
|
129
|
+
line: position.line + 1,
|
|
130
|
+
character: position.character + 1,
|
|
131
|
+
};
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
if (topLevelErrors.length > 0) {
|
|
135
|
+
console.error("Top-level errors are not allowed in errors/errors.ts.");
|
|
136
|
+
console.error("Put every error object inside a group, for example ERRORS.SPELL_CORRECTOR_JOB.NOT_FOUND.");
|
|
137
|
+
console.error("");
|
|
138
|
+
|
|
139
|
+
for (const error of topLevelErrors) {
|
|
140
|
+
const codeSuffix = error.code ? `, code: ${error.code}` : "";
|
|
141
|
+
console.error(
|
|
142
|
+
`- ${relativeErrorsPath}:${error.line}:${error.character} ${error.name}${codeSuffix}`
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
process.exit(1);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
console.log("errors/errors.ts structure is valid.");
|