@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.
@@ -0,0 +1,3 @@
1
+ #!/bin/sh
2
+
3
+ npm run check:errors -- --staged
@@ -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: "Не удалось подготовить runtime params для ноды",
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: "Не удалось подготовить runtime params для ноды",
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.66",
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.");