@things-factory/operato-hub 4.3.753 → 4.3.755
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/dist-server/controllers/bizplace-initializer/dataset/settings.js +1 -1
- package/dist-server/controllers/bizplace-initializer/dataset/settings.js.map +1 -1
- package/dist-server/index.js +4 -0
- package/dist-server/index.js.map +1 -1
- package/dist-server/validators/setting-validators.js +551 -0
- package/dist-server/validators/setting-validators.js.map +1 -0
- package/package.json +58 -58
- package/server/controllers/bizplace-initializer/dataset/settings.ts +2 -1
- package/server/index.ts +5 -0
- package/server/validators/setting-validators.ts +716 -0
|
@@ -90,7 +90,7 @@ exports.SETTINGS = {
|
|
|
90
90
|
},
|
|
91
91
|
{
|
|
92
92
|
name: 'enable-tote-scanning',
|
|
93
|
-
description: 'enable and disable the use of tote scanning',
|
|
93
|
+
description: 'enable and disable the use of tote scanning (0 = disabled, >= 1 = enabled, must be integer, no decimals or negative values)',
|
|
94
94
|
category: 'id-rule'
|
|
95
95
|
},
|
|
96
96
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../../server/controllers/bizplace-initializer/dataset/settings.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../../server/controllers/bizplace-initializer/dataset/settings.ts"],"names":[],"mappings":";;;AAAa,QAAA,QAAQ,GAAG;IACtB,SAAS,EAAE;QACT,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,wBAAwB,EAAE,QAAQ,EAAE,OAAO,EAAE;QACpF,EAAE,IAAI,EAAE,wBAAwB,EAAE,WAAW,EAAE,4BAA4B,EAAE,QAAQ,EAAE,OAAO,EAAE;QAChG,EAAE,IAAI,EAAE,wBAAwB,EAAE,WAAW,EAAE,2BAA2B,EAAE,QAAQ,EAAE,OAAO,EAAE;QAC/F,EAAE,IAAI,EAAE,uBAAuB,EAAE,WAAW,EAAE,2BAA2B,EAAE,QAAQ,EAAE,OAAO,EAAE;QAC9F,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,6BAA6B,EAAE,QAAQ,EAAE,OAAO,EAAE;QACzF,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,2BAA2B,EAAE,QAAQ,EAAE,OAAO,EAAE;QACrF,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,2BAA2B,EAAE,QAAQ,EAAE,OAAO,EAAE;QACrF,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,yBAAyB,EAAE,QAAQ,EAAE,OAAO,EAAE;QACjF,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,wBAAwB,EAAE,QAAQ,EAAE,UAAU,EAAE;QAC7F,EAAE,IAAI,EAAE,6BAA6B,EAAE,WAAW,EAAE,wBAAwB,EAAE,QAAQ,EAAE,UAAU,EAAE;QACpG,EAAE,IAAI,EAAE,+BAA+B,EAAE,WAAW,EAAE,wBAAwB,EAAE,QAAQ,EAAE,UAAU,EAAE;QACtG,EAAE,IAAI,EAAE,0BAA0B,EAAE,WAAW,EAAE,wBAAwB,EAAE,QAAQ,EAAE,UAAU,EAAE;QACjG;YACE,IAAI,EAAE,uCAAuC;YAC7C,WAAW,EAAE,qDAAqD;YAClE,QAAQ,EAAE,UAAU;SACrB;QACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE;QAC9E,EAAE,IAAI,EAAE,2BAA2B,EAAE,WAAW,EAAE,yCAAyC,EAAE,QAAQ,EAAE,SAAS,EAAE;QAClH,EAAE,IAAI,EAAE,wBAAwB,EAAE,WAAW,EAAE,4BAA4B,EAAE,QAAQ,EAAE,SAAS,EAAE;QAClG,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,wBAAwB,EAAE,QAAQ,EAAE,SAAS,EAAE;QAC1F,EAAE,IAAI,EAAE,wCAAwC,EAAE,WAAW,EAAE,4BAA4B,EAAE,QAAQ,EAAE,SAAS,EAAE;QAClH,EAAE,IAAI,EAAE,+BAA+B,EAAE,WAAW,EAAE,qBAAqB,EAAE,QAAQ,EAAE,SAAS,EAAE;QAClG,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,2BAA2B,EAAE,QAAQ,EAAE,SAAS,EAAE;QAC1F;YACE,IAAI,EAAE,yBAAyB;YAC/B,WAAW,EAAE,6CAA6C;YAC1D,QAAQ,EAAE,SAAS;SACpB;QACD,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,8CAA8C,EAAE,QAAQ,EAAE,SAAS,EAAE;QAChH;YACE,IAAI,EAAE,yBAAyB;YAC/B,WAAW,EAAE,wDAAwD;YACrE,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,IAAI,EAAE,qBAAqB;YAC3B,WAAW,EAAE,uCAAuC;YACpD,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,IAAI,EAAE,qBAAqB;YAC3B,WAAW,EAAE,4CAA4C;YACzD,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,IAAI,EAAE,qBAAqB;YAC3B,WAAW,EAAE,gDAAgD;YAC7D,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,kDAAkD;YAC/D,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,IAAI,EAAE,qCAAqC;YAC3C,WAAW,EAAE,2FAA2F;YACxG,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,kFAAkF;YAC/F,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,IAAI,EAAE,sBAAsB;YAC5B,WAAW,EAAE,kCAAkC;YAC/C,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,IAAI,EAAE,uBAAuB;YAC7B,WAAW,EAAE,2CAA2C;YACxD,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,IAAI,EAAE,0CAA0C;YAChD,WAAW,EACT,2GAA2G;YAC7G,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,IAAI,EAAE,0BAA0B;YAChC,WAAW,EAAE,0DAA0D;YACvE,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,IAAI,EAAE,sBAAsB;YAC5B,WAAW,EACT,6HAA6H;YAC/H,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,IAAI,EAAE,qBAAqB;YAC3B,WAAW,EAAE,oDAAoD;YACjE,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,IAAI,EAAE,sBAAsB;YAC5B,WAAW,EACT,yHAAyH;YAC3H,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,IAAI,EAAE,2BAA2B;YACjC,WAAW,EAAE,+DAA+D;YAC5E,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,OAAO;SACf;QACD;YACE,IAAI,EAAE,2BAA2B;YACjC,WAAW,EAAE,sCAAsC;YACnD,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,OAAO;SACf;QACD;YACE,IAAI,EAAE,qBAAqB;YAC3B,WAAW,EAAE,4BAA4B;YACzC,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,OAAO;SACf;KACF;IACD,MAAM,EAAE,EAAE;IACV,OAAO,EAAE,EAAE;CACZ,CAAA"}
|
package/dist-server/index.js
CHANGED
|
@@ -22,6 +22,10 @@ const biz_base_1 = require("@things-factory/biz-base");
|
|
|
22
22
|
const typeorm_1 = require("typeorm");
|
|
23
23
|
require("./routers/api");
|
|
24
24
|
require("./routes");
|
|
25
|
+
// Register setting validators at module load time (before schema is built)
|
|
26
|
+
// This ensures validators are available when mutations are called
|
|
27
|
+
const setting_validators_1 = require("./validators/setting-validators");
|
|
28
|
+
(0, setting_validators_1.registerOperatoHubSettingValidators)();
|
|
25
29
|
process.on('bootstrap-module-start', async ({ app, config, schema }) => {
|
|
26
30
|
process.superUserGranted = async (domain, user) => {
|
|
27
31
|
if (!domain || !user) {
|
package/dist-server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../server/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,gDAA6B;AAC7B,+CAA4B;AAC5B,6CAA0B;AAG1B,uDAAmD;AAEnD,qCAAuC;AACvC,yBAAsB;AACtB,oBAAiB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../server/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,gDAA6B;AAC7B,+CAA4B;AAC5B,6CAA0B;AAG1B,uDAAmD;AAEnD,qCAAuC;AACvC,yBAAsB;AACtB,oBAAiB;AAEjB,2EAA2E;AAC3E,kEAAkE;AAClE,wEAAqF;AACrF,IAAA,wDAAmC,GAAE,CAAA;AAUrC,OAAO,CAAC,EAAE,CAAC,wBAA+B,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAO,EAAE,EAAE;IACjF,OAAO,CAAC,gBAAgB,GAAG,KAAK,EAAE,MAAc,EAAE,IAAU,EAAoB,EAAE;QAChF,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE;YACpB,OAAO,KAAK,CAAA;SACb;QAED,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE;YAChC,OAAO,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAA;SAChC;aAAM;YACL,MAAM,EAAE,OAAO,EAAE,GAAa,MAAM,IAAA,uBAAa,EAAC,mBAAQ,CAAC,CAAC,OAAO,CAAC;gBAClE,KAAK,EAAE,EAAE,MAAM,EAAE;gBACjB,SAAS,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC;aACzC,CAAC,CAAA;YACF,MAAM,aAAa,GAAW,OAAO,CAAC,MAAM,CAAA;YAC5C,OAAO,aAAa,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAA;SACvC;IACH,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,551 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Operato Hub Setting Validators
|
|
4
|
+
*
|
|
5
|
+
* This file registers application-specific validators for settings used in operato-hub.
|
|
6
|
+
* Since operato-hub and operato-wms share the same settings, we include all WMS validators.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.registerOperatoHubSettingValidators = void 0;
|
|
10
|
+
// TODO: Moving this into setting-base package
|
|
11
|
+
const setting_base_1 = require("@things-factory/setting-base");
|
|
12
|
+
const setting_base_2 = require("@things-factory/setting-base");
|
|
13
|
+
const typeorm_1 = require("typeorm");
|
|
14
|
+
/**
|
|
15
|
+
* Validate batch-picking-limit setting
|
|
16
|
+
* Ensures the value is a positive number between 1 and 1000
|
|
17
|
+
*/
|
|
18
|
+
async function validateBatchPickingLimit(setting, context) {
|
|
19
|
+
if (!setting.value) {
|
|
20
|
+
return { valid: false, error: 'batch-picking-limit value is required' };
|
|
21
|
+
}
|
|
22
|
+
const limit = parseInt(setting.value, 10);
|
|
23
|
+
if (isNaN(limit) || limit < 1 || limit > 1000) {
|
|
24
|
+
return {
|
|
25
|
+
valid: false,
|
|
26
|
+
error: 'batch-picking-limit must be a number between 1 and 1000'
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
return { valid: true };
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Validate stacking-option-limit setting
|
|
33
|
+
* Ensures the value is a valid JSON with Min and Max properties
|
|
34
|
+
*/
|
|
35
|
+
async function validateStackingOptionLimit(setting, context) {
|
|
36
|
+
if (!setting.value) {
|
|
37
|
+
return { valid: false, error: 'stacking-option-limit value is required' };
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
const parsed = JSON.parse(setting.value);
|
|
41
|
+
if (typeof parsed.Min !== 'number' || typeof parsed.Max !== 'number') {
|
|
42
|
+
return {
|
|
43
|
+
valid: false,
|
|
44
|
+
error: 'stacking-option-limit must have Min and Max as numbers'
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
if (parsed.Min < 0 || parsed.Max < parsed.Min) {
|
|
48
|
+
return {
|
|
49
|
+
valid: false,
|
|
50
|
+
error: 'stacking-option-limit: Min must be >= 0 and Max must be >= Min'
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
return {
|
|
56
|
+
valid: false,
|
|
57
|
+
error: 'stacking-option-limit must be valid JSON format: { "Min": 1, "Max": 1 }'
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
return { valid: true };
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Validate location sorting rule settings
|
|
64
|
+
* Ensures the value is valid JSON array with name and desc properties
|
|
65
|
+
*/
|
|
66
|
+
async function validateLocationSortingRule(setting, context) {
|
|
67
|
+
if (!setting.value) {
|
|
68
|
+
return { valid: true }; // Allow empty value
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
const rules = JSON.parse(setting.value);
|
|
72
|
+
if (!Array.isArray(rules)) {
|
|
73
|
+
return {
|
|
74
|
+
valid: false,
|
|
75
|
+
error: 'Location sorting rule must be a JSON array'
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
for (const rule of rules) {
|
|
79
|
+
if (typeof rule.name !== 'string') {
|
|
80
|
+
return {
|
|
81
|
+
valid: false,
|
|
82
|
+
error: 'Each rule must have a "name" property as string'
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
if (typeof rule.desc !== 'boolean') {
|
|
86
|
+
return {
|
|
87
|
+
valid: false,
|
|
88
|
+
error: 'Each rule must have a "desc" property as boolean'
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
catch (e) {
|
|
94
|
+
return {
|
|
95
|
+
valid: false,
|
|
96
|
+
error: 'Location sorting rule must be valid JSON array format'
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
return { valid: true };
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Validate boolean settings (enable/disable flags)
|
|
103
|
+
*/
|
|
104
|
+
async function validateBooleanSetting(setting, context) {
|
|
105
|
+
if (setting.value && setting.value !== 'true' && setting.value !== 'false') {
|
|
106
|
+
return {
|
|
107
|
+
valid: false,
|
|
108
|
+
error: `${setting.name} must be "true" or "false"`
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
return { valid: true };
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Validate minimum-seal-number setting
|
|
115
|
+
* Ensures the value is a non-negative integer (0 or above, no decimals)
|
|
116
|
+
*/
|
|
117
|
+
async function validateMinimumSealNumber(setting, context) {
|
|
118
|
+
if (!setting.value) {
|
|
119
|
+
return { valid: false, error: 'minimum-seal-number value is required' };
|
|
120
|
+
}
|
|
121
|
+
// Check if value contains decimal point
|
|
122
|
+
if (setting.value.includes('.')) {
|
|
123
|
+
return {
|
|
124
|
+
valid: false,
|
|
125
|
+
error: 'minimum-seal-number must be an integer (no decimals allowed)'
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
const number = parseInt(setting.value, 10);
|
|
129
|
+
// Check if parsing resulted in NaN
|
|
130
|
+
if (isNaN(number)) {
|
|
131
|
+
return {
|
|
132
|
+
valid: false,
|
|
133
|
+
error: 'minimum-seal-number must be a valid number'
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
// Check if the parsed value matches the original string (to catch cases like "123abc")
|
|
137
|
+
if (number.toString() !== setting.value.trim()) {
|
|
138
|
+
return {
|
|
139
|
+
valid: false,
|
|
140
|
+
error: 'minimum-seal-number must be a valid integer'
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
// Check if negative
|
|
144
|
+
if (number < 0) {
|
|
145
|
+
return {
|
|
146
|
+
valid: false,
|
|
147
|
+
error: 'minimum-seal-number must be 0 or above (negative numbers not allowed)'
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
return { valid: true };
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Validate update for batch-picking-limit
|
|
154
|
+
*/
|
|
155
|
+
async function validateBatchPickingLimitUpdate(existingSetting, patch, context) {
|
|
156
|
+
// Only validate if value is being updated
|
|
157
|
+
if (patch.value === undefined) {
|
|
158
|
+
return { valid: true };
|
|
159
|
+
}
|
|
160
|
+
return await validateBatchPickingLimit(Object.assign(Object.assign({}, existingSetting), { value: patch.value }), context);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Validate update for minimum-seal-number
|
|
164
|
+
*/
|
|
165
|
+
async function validateMinimumSealNumberUpdate(existingSetting, patch, context) {
|
|
166
|
+
// Only validate if value is being updated
|
|
167
|
+
if (patch.value === undefined) {
|
|
168
|
+
return { valid: true };
|
|
169
|
+
}
|
|
170
|
+
return await validateMinimumSealNumber(Object.assign(Object.assign({}, existingSetting), { value: patch.value }), context);
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Validate enable-tote-scanning setting
|
|
174
|
+
* Ensures the value is a non-negative integer (0 or above, no decimals)
|
|
175
|
+
* 0 = disabled, >= 1 = enabled
|
|
176
|
+
*/
|
|
177
|
+
async function validateEnableToteScanning(setting, context) {
|
|
178
|
+
if (!setting.value) {
|
|
179
|
+
return { valid: false, error: 'enable-tote-scanning value is required' };
|
|
180
|
+
}
|
|
181
|
+
// Check if value contains decimal point
|
|
182
|
+
if (setting.value.includes('.')) {
|
|
183
|
+
return {
|
|
184
|
+
valid: false,
|
|
185
|
+
error: 'enable-tote-scanning must be an integer (no decimals allowed)'
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
const number = parseInt(setting.value, 10);
|
|
189
|
+
// Check if parsing resulted in NaN
|
|
190
|
+
if (isNaN(number)) {
|
|
191
|
+
return {
|
|
192
|
+
valid: false,
|
|
193
|
+
error: 'enable-tote-scanning must be a valid number'
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
// Check if the parsed value matches the original string (to catch cases like "123abc")
|
|
197
|
+
if (number.toString() !== setting.value.trim()) {
|
|
198
|
+
return {
|
|
199
|
+
valid: false,
|
|
200
|
+
error: 'enable-tote-scanning must be a valid integer'
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
// Check if negative
|
|
204
|
+
if (number < 0) {
|
|
205
|
+
return {
|
|
206
|
+
valid: false,
|
|
207
|
+
error: 'enable-tote-scanning must be 0 or above (negative numbers not allowed)'
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
// Cross-validation: If enable-tote-scanning >= 1, qc-sku must be false
|
|
211
|
+
if (number >= 1) {
|
|
212
|
+
const qcSkuSetting = await (0, typeorm_1.getRepository)(setting_base_2.Setting).findOne({
|
|
213
|
+
where: { domain: context.domain, name: 'qc-sku' }
|
|
214
|
+
});
|
|
215
|
+
if (qcSkuSetting && (qcSkuSetting.value === 'true' || qcSkuSetting.value === true)) {
|
|
216
|
+
return {
|
|
217
|
+
valid: false,
|
|
218
|
+
error: 'enable-tote-scanning cannot be set to 1 or above when qc-sku is enabled. Please disable qc-sku first.'
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
// Cross-validation: If enable-tote-scanning >= 2, disable-qc-in-loading must be false
|
|
223
|
+
if (number >= 2) {
|
|
224
|
+
const disableQcInLoadingSetting = await (0, typeorm_1.getRepository)(setting_base_2.Setting).findOne({
|
|
225
|
+
where: { domain: context.domain, name: 'disable-QC-in-loading' }
|
|
226
|
+
});
|
|
227
|
+
if (disableQcInLoadingSetting &&
|
|
228
|
+
(disableQcInLoadingSetting.value === 'true' || disableQcInLoadingSetting.value === true)) {
|
|
229
|
+
return {
|
|
230
|
+
valid: false,
|
|
231
|
+
error: 'enable-tote-scanning cannot be set to 2 or above when disable-qc-in-loading is true. Please set disable-qc-in-loading to false first.'
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
return { valid: true };
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Validate update for enable-tote-scanning
|
|
239
|
+
*/
|
|
240
|
+
async function validateEnableToteScanningUpdate(existingSetting, patch, context) {
|
|
241
|
+
// Only validate if value is being updated
|
|
242
|
+
if (patch.value === undefined) {
|
|
243
|
+
return { valid: true };
|
|
244
|
+
}
|
|
245
|
+
const newValue = parseInt(patch.value || '0', 10);
|
|
246
|
+
// Cross-validation: If enable-tote-scanning is being set to >= 1, qc-sku must be false
|
|
247
|
+
if (newValue >= 1) {
|
|
248
|
+
const qcSkuSetting = await (0, typeorm_1.getRepository)(setting_base_2.Setting).findOne({
|
|
249
|
+
where: { domain: context.domain, name: 'qc-sku' }
|
|
250
|
+
});
|
|
251
|
+
if (qcSkuSetting && (qcSkuSetting.value === 'true' || qcSkuSetting.value === true)) {
|
|
252
|
+
return {
|
|
253
|
+
valid: false,
|
|
254
|
+
error: 'enable-tote-scanning cannot be set to 1 or above when qc-sku is enabled. Please disable qc-sku first.'
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
// Cross-validation: If enable-tote-scanning is being set to >= 2, disable-qc-in-loading must be false
|
|
259
|
+
if (newValue >= 2) {
|
|
260
|
+
const disableQcInLoadingSetting = await (0, typeorm_1.getRepository)(setting_base_2.Setting).findOne({
|
|
261
|
+
where: { domain: context.domain, name: 'disable-QC-in-loading' }
|
|
262
|
+
});
|
|
263
|
+
if (disableQcInLoadingSetting &&
|
|
264
|
+
(disableQcInLoadingSetting.value === 'true' || disableQcInLoadingSetting.value === true)) {
|
|
265
|
+
return {
|
|
266
|
+
valid: false,
|
|
267
|
+
error: 'enable-tote-scanning cannot be set to 2 or above when disable-qc-in-loading is true. Please set disable-qc-in-loading to false first.'
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
return await validateEnableToteScanning(Object.assign(Object.assign({}, existingSetting), { value: patch.value }), context);
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Validate qc-sku setting
|
|
275
|
+
* Ensures qc-sku cannot be enabled when enable-tote-scanning >= 1
|
|
276
|
+
* Ensures qc-sku cannot be enabled when disable-QC-in-loading is true
|
|
277
|
+
*/
|
|
278
|
+
async function validateQcSku(setting, context) {
|
|
279
|
+
// Check if qc-sku is being set to true
|
|
280
|
+
if (setting.value === 'true' || setting.value === true) {
|
|
281
|
+
const enableToteScanningSetting = await (0, typeorm_1.getRepository)(setting_base_2.Setting).findOne({
|
|
282
|
+
where: { domain: context.domain, name: 'enable-tote-scanning' }
|
|
283
|
+
});
|
|
284
|
+
if (enableToteScanningSetting) {
|
|
285
|
+
const enableToteScanningValue = parseInt(enableToteScanningSetting.value || '0', 10);
|
|
286
|
+
if (enableToteScanningValue >= 1) {
|
|
287
|
+
return {
|
|
288
|
+
valid: false,
|
|
289
|
+
error: 'qc-sku cannot be enabled when enable-tote-scanning is 1 or above. Please set enable-tote-scanning to 0 first.'
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
// Cross-validation: If qc-sku is being set to true, disable-QC-in-loading must be false
|
|
294
|
+
const disableQcInLoadingSetting = await (0, typeorm_1.getRepository)(setting_base_2.Setting).findOne({
|
|
295
|
+
where: { domain: context.domain, name: 'disable-QC-in-loading' }
|
|
296
|
+
});
|
|
297
|
+
if (disableQcInLoadingSetting &&
|
|
298
|
+
(disableQcInLoadingSetting.value === 'true' || disableQcInLoadingSetting.value === true)) {
|
|
299
|
+
return {
|
|
300
|
+
valid: false,
|
|
301
|
+
error: 'qc-sku cannot be enabled when disable-QC-in-loading is true. Please set disable-QC-in-loading to false first.'
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
return { valid: true };
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Validate update for qc-sku
|
|
309
|
+
*/
|
|
310
|
+
async function validateQcSkuUpdate(existingSetting, patch, context) {
|
|
311
|
+
// Only validate if value is being updated
|
|
312
|
+
if (patch.value === undefined) {
|
|
313
|
+
return { valid: true };
|
|
314
|
+
}
|
|
315
|
+
// Check if qc-sku is being set to true
|
|
316
|
+
if (patch.value === 'true' || patch.value === true) {
|
|
317
|
+
const enableToteScanningSetting = await (0, typeorm_1.getRepository)(setting_base_2.Setting).findOne({
|
|
318
|
+
where: { domain: context.domain, name: 'enable-tote-scanning' }
|
|
319
|
+
});
|
|
320
|
+
if (enableToteScanningSetting) {
|
|
321
|
+
const enableToteScanningValue = parseInt(enableToteScanningSetting.value || '0', 10);
|
|
322
|
+
if (enableToteScanningValue >= 1) {
|
|
323
|
+
return {
|
|
324
|
+
valid: false,
|
|
325
|
+
error: 'qc-sku cannot be enabled when enable-tote-scanning is 1 or above. Please set enable-tote-scanning to 0 first.'
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
// Cross-validation: If qc-sku is being set to true, disable-QC-in-loading must be false
|
|
330
|
+
const disableQcInLoadingSetting = await (0, typeorm_1.getRepository)(setting_base_2.Setting).findOne({
|
|
331
|
+
where: { domain: context.domain, name: 'disable-QC-in-loading' }
|
|
332
|
+
});
|
|
333
|
+
if (disableQcInLoadingSetting &&
|
|
334
|
+
(disableQcInLoadingSetting.value === 'true' || disableQcInLoadingSetting.value === true)) {
|
|
335
|
+
return {
|
|
336
|
+
valid: false,
|
|
337
|
+
error: 'qc-sku cannot be enabled when disable-QC-in-loading is true. Please set disable-QC-in-loading to false first.'
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
return await validateQcSku(Object.assign(Object.assign({}, existingSetting), { value: patch.value }), context);
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Validate API key format for operato-hub settings
|
|
345
|
+
*/
|
|
346
|
+
async function validateApiKeySetting(setting, context) {
|
|
347
|
+
if (setting.name.includes('api-key') && setting.value) {
|
|
348
|
+
// Example: API key should be at least 32 characters
|
|
349
|
+
if (setting.value.length < 32) {
|
|
350
|
+
return {
|
|
351
|
+
valid: false,
|
|
352
|
+
error: 'API key must be at least 32 characters long'
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
return { valid: true };
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Validate marketplace-specific settings
|
|
360
|
+
*/
|
|
361
|
+
async function validateMarketplaceSetting(setting, context) {
|
|
362
|
+
if (setting.name.startsWith('marketplace-')) {
|
|
363
|
+
// Add marketplace-specific validation logic here
|
|
364
|
+
if (!setting.value) {
|
|
365
|
+
return { valid: false, error: `${setting.name} value is required` };
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
return { valid: true };
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Validate disable-qc-in-loading setting
|
|
372
|
+
* Ensures disable-qc-in-loading can only be set to true when enable-tote-scanning is 0 or 1
|
|
373
|
+
* Ensures disable-qc-in-loading cannot be set to true when qc-sku is true
|
|
374
|
+
*/
|
|
375
|
+
async function validateDisableQcInLoading(setting, context) {
|
|
376
|
+
// Check if disable-qc-in-loading is being set to true
|
|
377
|
+
if (setting.value === 'true' || setting.value === true) {
|
|
378
|
+
const enableToteScanningSetting = await (0, typeorm_1.getRepository)(setting_base_2.Setting).findOne({
|
|
379
|
+
where: { domain: context.domain, name: 'enable-tote-scanning' }
|
|
380
|
+
});
|
|
381
|
+
if (enableToteScanningSetting) {
|
|
382
|
+
const enableToteScanningValue = parseInt(enableToteScanningSetting.value || '0', 10);
|
|
383
|
+
// enable-tote-scanning must be 0 or 1 for disable-qc-in-loading to be true
|
|
384
|
+
if (enableToteScanningValue > 1) {
|
|
385
|
+
return {
|
|
386
|
+
valid: false,
|
|
387
|
+
error: 'disable-qc-in-loading cannot be set to true when enable-tote-scanning is 2 or above. Please set enable-tote-scanning to 0 or 1 first.'
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
// Cross-validation: If disable-QC-in-loading is being set to true, qc-sku must be false
|
|
392
|
+
const qcSkuSetting = await (0, typeorm_1.getRepository)(setting_base_2.Setting).findOne({
|
|
393
|
+
where: { domain: context.domain, name: 'qc-sku' }
|
|
394
|
+
});
|
|
395
|
+
if (qcSkuSetting && (qcSkuSetting.value === 'true' || qcSkuSetting.value === true)) {
|
|
396
|
+
return {
|
|
397
|
+
valid: false,
|
|
398
|
+
error: 'disable-QC-in-loading cannot be set to true when qc-sku is enabled. Please set qc-sku to false first.'
|
|
399
|
+
};
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
return { valid: true };
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Validate update for disable-qc-in-loading
|
|
406
|
+
*/
|
|
407
|
+
async function validateDisableQcInLoadingUpdate(existingSetting, patch, context) {
|
|
408
|
+
// Only validate if value is being updated
|
|
409
|
+
if (patch.value === undefined) {
|
|
410
|
+
return { valid: true };
|
|
411
|
+
}
|
|
412
|
+
// Check if disable-qc-in-loading is being set to true
|
|
413
|
+
if (patch.value === 'true' || patch.value === true) {
|
|
414
|
+
const enableToteScanningSetting = await (0, typeorm_1.getRepository)(setting_base_2.Setting).findOne({
|
|
415
|
+
where: { domain: context.domain, name: 'enable-tote-scanning' }
|
|
416
|
+
});
|
|
417
|
+
if (enableToteScanningSetting) {
|
|
418
|
+
const enableToteScanningValue = parseInt(enableToteScanningSetting.value || '0', 10);
|
|
419
|
+
// enable-tote-scanning must be 0 or 1 for disable-qc-in-loading to be true
|
|
420
|
+
if (enableToteScanningValue > 1) {
|
|
421
|
+
return {
|
|
422
|
+
valid: false,
|
|
423
|
+
error: 'disable-qc-in-loading cannot be set to true when enable-tote-scanning is 2 or above. Please set enable-tote-scanning to 0 or 1 first.'
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
// Cross-validation: If disable-QC-in-loading is being set to true, qc-sku must be false
|
|
428
|
+
const qcSkuSetting = await (0, typeorm_1.getRepository)(setting_base_2.Setting).findOne({
|
|
429
|
+
where: { domain: context.domain, name: 'qc-sku' }
|
|
430
|
+
});
|
|
431
|
+
if (qcSkuSetting && (qcSkuSetting.value === 'true' || qcSkuSetting.value === true)) {
|
|
432
|
+
return {
|
|
433
|
+
valid: false,
|
|
434
|
+
error: 'disable-QC-in-loading cannot be set to true when qc-sku is enabled. Please set qc-sku to false first.'
|
|
435
|
+
};
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
return await validateDisableQcInLoading(Object.assign(Object.assign({}, existingSetting), { value: patch.value }), context);
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Batch validator for qc-sku and disable-QC-in-loading
|
|
442
|
+
* Validates that both settings cannot be set to true simultaneously
|
|
443
|
+
*/
|
|
444
|
+
async function validateQcSkuAndDisableQcInLoadingBatch(patches, existingSettings, context) {
|
|
445
|
+
// Find patches for qc-sku and disable-QC-in-loading
|
|
446
|
+
let qcSkuPatch;
|
|
447
|
+
let disableQcInLoadingPatch;
|
|
448
|
+
let qcSkuExisting;
|
|
449
|
+
let disableQcInLoadingExisting;
|
|
450
|
+
for (const patch of patches) {
|
|
451
|
+
// Try to find existing setting by id first, then by name
|
|
452
|
+
let existing;
|
|
453
|
+
if (patch.id) {
|
|
454
|
+
existing = existingSettings.get(patch.id);
|
|
455
|
+
}
|
|
456
|
+
// If not found by id, try to find by name in the patches
|
|
457
|
+
if (!existing && patch.name) {
|
|
458
|
+
// Look through existing settings map to find by name
|
|
459
|
+
for (const setting of existingSettings.values()) {
|
|
460
|
+
if (setting.name === patch.name) {
|
|
461
|
+
existing = setting;
|
|
462
|
+
break;
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
if (existing) {
|
|
467
|
+
if (existing.name === 'qc-sku') {
|
|
468
|
+
qcSkuPatch = patch;
|
|
469
|
+
qcSkuExisting = existing;
|
|
470
|
+
}
|
|
471
|
+
else if (existing.name === 'disable-QC-in-loading') {
|
|
472
|
+
disableQcInLoadingPatch = patch;
|
|
473
|
+
disableQcInLoadingExisting = existing;
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
else if (patch.name === 'qc-sku') {
|
|
477
|
+
// Patch might be for a new setting or we need to fetch it
|
|
478
|
+
qcSkuPatch = patch;
|
|
479
|
+
qcSkuExisting = await (0, typeorm_1.getRepository)(setting_base_2.Setting).findOne({
|
|
480
|
+
where: { domain: context.domain, name: 'qc-sku' }
|
|
481
|
+
});
|
|
482
|
+
}
|
|
483
|
+
else if (patch.name === 'disable-QC-in-loading') {
|
|
484
|
+
disableQcInLoadingPatch = patch;
|
|
485
|
+
disableQcInLoadingExisting = await (0, typeorm_1.getRepository)(setting_base_2.Setting).findOne({
|
|
486
|
+
where: { domain: context.domain, name: 'disable-QC-in-loading' }
|
|
487
|
+
});
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
// Get the effective values (new value from patch if present, otherwise existing value)
|
|
491
|
+
const qcSkuValue = (qcSkuPatch === null || qcSkuPatch === void 0 ? void 0 : qcSkuPatch.value) !== undefined ? qcSkuPatch.value : qcSkuExisting === null || qcSkuExisting === void 0 ? void 0 : qcSkuExisting.value;
|
|
492
|
+
const disableQcInLoadingValue = (disableQcInLoadingPatch === null || disableQcInLoadingPatch === void 0 ? void 0 : disableQcInLoadingPatch.value) !== undefined ? disableQcInLoadingPatch.value : disableQcInLoadingExisting === null || disableQcInLoadingExisting === void 0 ? void 0 : disableQcInLoadingExisting.value;
|
|
493
|
+
// Check if both are being set to true simultaneously
|
|
494
|
+
const qcSkuIsTrue = qcSkuValue === 'true' || qcSkuValue === true;
|
|
495
|
+
const disableQcInLoadingIsTrue = disableQcInLoadingValue === 'true' || disableQcInLoadingValue === true;
|
|
496
|
+
if (qcSkuIsTrue && disableQcInLoadingIsTrue) {
|
|
497
|
+
return {
|
|
498
|
+
valid: false,
|
|
499
|
+
error: 'qc-sku and disable-QC-in-loading cannot both be set to true simultaneously. Please set one to false first.'
|
|
500
|
+
};
|
|
501
|
+
}
|
|
502
|
+
return { valid: true };
|
|
503
|
+
}
|
|
504
|
+
/**
|
|
505
|
+
* Register all operato-hub validators
|
|
506
|
+
* This function should be called during application bootstrap
|
|
507
|
+
*/
|
|
508
|
+
function registerOperatoHubSettingValidators() {
|
|
509
|
+
// Register validators for specific setting names (shared with operato-wms)
|
|
510
|
+
setting_base_1.settingValidatorRegistry.registerCreateValidator('batch-picking-limit', validateBatchPickingLimit);
|
|
511
|
+
setting_base_1.settingValidatorRegistry.registerUpdateValidator('batch-picking-limit', validateBatchPickingLimitUpdate);
|
|
512
|
+
setting_base_1.settingValidatorRegistry.registerCreateValidator('stacking-option-limit', validateStackingOptionLimit);
|
|
513
|
+
setting_base_1.settingValidatorRegistry.registerUpdateValidator('stacking-option-limit', validateStackingOptionLimit);
|
|
514
|
+
setting_base_1.settingValidatorRegistry.registerCreateValidator('minimum-seal-number', validateMinimumSealNumber);
|
|
515
|
+
setting_base_1.settingValidatorRegistry.registerUpdateValidator('minimum-seal-number', validateMinimumSealNumberUpdate);
|
|
516
|
+
setting_base_1.settingValidatorRegistry.registerCreateValidator('enable-tote-scanning', validateEnableToteScanning);
|
|
517
|
+
setting_base_1.settingValidatorRegistry.registerUpdateValidator('enable-tote-scanning', validateEnableToteScanningUpdate);
|
|
518
|
+
setting_base_1.settingValidatorRegistry.registerCreateValidator('qc-sku', validateQcSku);
|
|
519
|
+
setting_base_1.settingValidatorRegistry.registerUpdateValidator('qc-sku', validateQcSkuUpdate);
|
|
520
|
+
setting_base_1.settingValidatorRegistry.registerCreateValidator('disable-QC-in-loading', validateDisableQcInLoading);
|
|
521
|
+
setting_base_1.settingValidatorRegistry.registerUpdateValidator('disable-QC-in-loading', validateDisableQcInLoadingUpdate);
|
|
522
|
+
// Register batch validator for cross-validation between qc-sku and disable-QC-in-loading
|
|
523
|
+
setting_base_1.settingValidatorRegistry.registerBatchValidator(validateQcSkuAndDisableQcInLoadingBatch);
|
|
524
|
+
// Register validators for location sorting rules using pattern matching
|
|
525
|
+
setting_base_1.settingValidatorRegistry.registerPatternValidator((name) => name.startsWith('rule-for-'), validateLocationSortingRule, validateLocationSortingRule);
|
|
526
|
+
// Register validators for boolean settings using pattern matching
|
|
527
|
+
const booleanSettings = [
|
|
528
|
+
'enable-bin-picking',
|
|
529
|
+
'enable-product-scanning',
|
|
530
|
+
'enable-beta-feature',
|
|
531
|
+
'enable-carton-label',
|
|
532
|
+
'enable-item-label',
|
|
533
|
+
'hide-cross-dock',
|
|
534
|
+
'disable-reusable-pallet',
|
|
535
|
+
'enable-direct-activate-packing-worksheet',
|
|
536
|
+
'enable-print-route-label',
|
|
537
|
+
'enable-picking-random-seq',
|
|
538
|
+
'enable-loading-select-all',
|
|
539
|
+
'smart_batch_picking'
|
|
540
|
+
];
|
|
541
|
+
booleanSettings.forEach(settingName => {
|
|
542
|
+
setting_base_1.settingValidatorRegistry.registerCreateValidator(settingName, validateBooleanSetting);
|
|
543
|
+
setting_base_1.settingValidatorRegistry.registerUpdateValidator(settingName, validateBooleanSetting);
|
|
544
|
+
});
|
|
545
|
+
// Register operato-hub specific validators using pattern matching for API keys
|
|
546
|
+
setting_base_1.settingValidatorRegistry.registerPatternValidator(/api-key/i, validateApiKeySetting, validateApiKeySetting);
|
|
547
|
+
// Register validators for marketplace settings
|
|
548
|
+
setting_base_1.settingValidatorRegistry.registerPatternValidator((name) => name.startsWith('marketplace-'), validateMarketplaceSetting, validateMarketplaceSetting);
|
|
549
|
+
}
|
|
550
|
+
exports.registerOperatoHubSettingValidators = registerOperatoHubSettingValidators;
|
|
551
|
+
//# sourceMappingURL=setting-validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setting-validators.js","sourceRoot":"","sources":["../../server/validators/setting-validators.ts"],"names":[],"mappings":"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"}
|