onroute-policy-engine 2.15.0 → 2.17.0
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/enum/facts.d.ts +1 -0
- package/dist/enum/facts.js +1 -0
- package/dist/enum/policy-check.d.ts +1 -0
- package/dist/enum/policy-check.js +1 -0
- package/dist/helper/facts.helper.js +33 -17
- package/dist/helper/policy-check.helper.d.ts +6 -0
- package/dist/helper/policy-check.helper.js +95 -0
- package/dist/policy-engine.js +9 -3
- package/dist/validation-results.d.ts +7 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/dist/enum/facts.d.ts
CHANGED
package/dist/enum/facts.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.CostFacts = exports.PolicyFacts = void 0;
|
|
|
4
4
|
var PolicyFacts;
|
|
5
5
|
(function (PolicyFacts) {
|
|
6
6
|
PolicyFacts["AllowedVehicles"] = "allowedVehicles";
|
|
7
|
+
PolicyFacts["AxleCalcResults"] = "axleCalcResults";
|
|
7
8
|
PolicyFacts["AxleCalcViolations"] = "axleCalcViolations";
|
|
8
9
|
PolicyFacts["ConfigurationIsValid"] = "configurationIsValid";
|
|
9
10
|
PolicyFacts["DaysBetween"] = "daysBetween";
|
|
@@ -13,5 +13,6 @@ export declare enum PolicyCheckId {
|
|
|
13
13
|
MinTandemSteerAxleWeight = "minimum-tandem-steer-axle-weight",
|
|
14
14
|
NumberOfAxles = "number-of-axles",
|
|
15
15
|
NumberOfWheelsPerAxle = "number-of-wheels",
|
|
16
|
+
PickerTruckTractorWeightRestrictions = "picker-truck-tractor-weight-restrictions",
|
|
16
17
|
TruckTractorWheelbase = "truck-tractor-wheelbase"
|
|
17
18
|
}
|
|
@@ -18,5 +18,6 @@ var PolicyCheckId;
|
|
|
18
18
|
PolicyCheckId["MinTandemSteerAxleWeight"] = "minimum-tandem-steer-axle-weight";
|
|
19
19
|
PolicyCheckId["NumberOfAxles"] = "number-of-axles";
|
|
20
20
|
PolicyCheckId["NumberOfWheelsPerAxle"] = "number-of-wheels";
|
|
21
|
+
PolicyCheckId["PickerTruckTractorWeightRestrictions"] = "picker-truck-tractor-weight-restrictions";
|
|
21
22
|
PolicyCheckId["TruckTractorWheelbase"] = "truck-tractor-wheelbase";
|
|
22
23
|
})(PolicyCheckId || (exports.PolicyCheckId = PolicyCheckId = {}));
|
|
@@ -9,6 +9,25 @@ const quarterOfYear_1 = __importDefault(require("dayjs/plugin/quarterOfYear"));
|
|
|
9
9
|
const enum_1 = require("onroute-policy-engine/enum");
|
|
10
10
|
const policy_check_helper_1 = require("./policy-check.helper");
|
|
11
11
|
dayjs_1.default.extend(quarterOfYear_1.default);
|
|
12
|
+
const AXLE_CALC_RESULTS_FACT = 'axleCalcResults';
|
|
13
|
+
const getAxleCalculationInputs = async (policy, almanac) => {
|
|
14
|
+
var _a, _b;
|
|
15
|
+
const vehicleDetails = await almanac.factValue(enum_1.PermitAppInfo.PermitData, {}, enum_1.PermitAppInfo.VehicleDetails);
|
|
16
|
+
const vehicleConfigurationData = await almanac.factValue(enum_1.PermitAppInfo.PermitData, {}, enum_1.PermitAppInfo.VehicleConfiguration);
|
|
17
|
+
const vehicleConfiguration = policy.getSimplifiedVehicleConfiguration(vehicleDetails, vehicleConfigurationData);
|
|
18
|
+
const powerUnitAxleConfiguration = (_a = vehicleConfigurationData === null || vehicleConfigurationData === void 0 ? void 0 : vehicleConfigurationData.axleConfiguration) !== null && _a !== void 0 ? _a : [];
|
|
19
|
+
const trailers = (_b = vehicleConfigurationData === null || vehicleConfigurationData === void 0 ? void 0 : vehicleConfigurationData.trailers) !== null && _b !== void 0 ? _b : [];
|
|
20
|
+
const hasNestedTrailerAxleConfiguration = trailers.some((trailer) => Array.isArray(trailer.axleConfiguration) &&
|
|
21
|
+
trailer.axleConfiguration.length > 0);
|
|
22
|
+
const axleConfiguration = hasNestedTrailerAxleConfiguration
|
|
23
|
+
? policy.combineAxleConfigurations(powerUnitAxleConfiguration, trailers)
|
|
24
|
+
: powerUnitAxleConfiguration;
|
|
25
|
+
return {
|
|
26
|
+
vehicleConfiguration,
|
|
27
|
+
axleConfiguration,
|
|
28
|
+
licensedGVW: vehicleDetails.licensedGVW || 0,
|
|
29
|
+
};
|
|
30
|
+
};
|
|
12
31
|
/**
|
|
13
32
|
* Adds runtime facts for the validation. For example, adds the
|
|
14
33
|
* validation date for comparison against startDate of the permit.
|
|
@@ -112,8 +131,7 @@ function addRuntimeFacts(engine, policy) {
|
|
|
112
131
|
* weight by summing the weights of the individual axle units.
|
|
113
132
|
*/
|
|
114
133
|
engine.addFact(enum_1.PolicyFacts.GrossVehicleCombinationWeight, async function (params, almanac) {
|
|
115
|
-
|
|
116
|
-
const axleConfiguration = await almanac.factValue(enum_1.PermitAppInfo.PermitData, {}, enum_1.PermitAppInfo.AxleConfiguration);
|
|
134
|
+
const { axleConfiguration } = await getAxleCalculationInputs(policy, almanac);
|
|
117
135
|
return axleConfiguration.reduce((w, curr) => w + curr.axleUnitWeight, 0);
|
|
118
136
|
});
|
|
119
137
|
/**
|
|
@@ -122,10 +140,7 @@ function addRuntimeFacts(engine, policy) {
|
|
|
122
140
|
* Returns true if all policy check results are 'pass', false otherwise.
|
|
123
141
|
*/
|
|
124
142
|
engine.addFact(enum_1.PolicyFacts.PolicyCheckPassed.toString(), async function (params, almanac) {
|
|
125
|
-
|
|
126
|
-
const vehicleConfiguration = await almanac.factValue(enum_1.PolicyFacts.VehicleConfiguration);
|
|
127
|
-
// Retrieve the axle configuration from permit data
|
|
128
|
-
const axleConfiguration = await almanac.factValue(enum_1.PermitAppInfo.PermitData, {}, enum_1.PermitAppInfo.AxleConfiguration);
|
|
143
|
+
const { vehicleConfiguration, axleConfiguration } = await getAxleCalculationInputs(policy, almanac);
|
|
129
144
|
// Get the specific policy check ID from parameters
|
|
130
145
|
const policyCheckId = params.policyId;
|
|
131
146
|
// Look up the policy check function from the policy check map
|
|
@@ -144,19 +159,20 @@ function addRuntimeFacts(engine, policy) {
|
|
|
144
159
|
return policyCheckResults.every((r) => r.result === enum_1.PolicyCheckResultType.Pass);
|
|
145
160
|
});
|
|
146
161
|
/**
|
|
147
|
-
* Add runtime fact to return
|
|
148
|
-
*
|
|
149
|
-
|
|
150
|
-
|
|
162
|
+
* Add runtime fact to return the complete runAxleCalculation result. This
|
|
163
|
+
* is the structured ASW validation detail exposed by validate().
|
|
164
|
+
*/
|
|
165
|
+
engine.addFact(AXLE_CALC_RESULTS_FACT, async function (params, almanac) {
|
|
166
|
+
const { vehicleConfiguration, axleConfiguration, licensedGVW } = await getAxleCalculationInputs(policy, almanac);
|
|
167
|
+
return policy.runAxleCalculation(vehicleConfiguration, axleConfiguration, licensedGVW);
|
|
168
|
+
});
|
|
169
|
+
/**
|
|
170
|
+
* Add runtime fact to return messages from failed axle calculation checks.
|
|
171
|
+
* This keeps the generic validation violation as the gating signal while
|
|
172
|
+
* axleCalcResults carries the structured ASW detail.
|
|
151
173
|
*/
|
|
152
174
|
engine.addFact(enum_1.PolicyFacts.AxleCalcViolations, async function (params, almanac) {
|
|
153
|
-
|
|
154
|
-
const vehicleConfiguration = await almanac.factValue(enum_1.PolicyFacts.VehicleConfiguration);
|
|
155
|
-
// Retrieve the axle configuration from permit data
|
|
156
|
-
const axleConfiguration = await almanac.factValue(enum_1.PermitAppInfo.PermitData, {}, enum_1.PermitAppInfo.AxleConfiguration);
|
|
157
|
-
// Retrieve licensed GVW from permit data
|
|
158
|
-
const vehicleDetails = await almanac.factValue(enum_1.PermitAppInfo.PermitData, {}, enum_1.PermitAppInfo.VehicleDetails);
|
|
159
|
-
const results = policy.runAxleCalculation(vehicleConfiguration, axleConfiguration, vehicleDetails.licensedGVW || 0);
|
|
175
|
+
const results = await almanac.factValue(AXLE_CALC_RESULTS_FACT);
|
|
160
176
|
const violations = results.results.filter((r) => r.result === enum_1.PolicyCheckResultType.Fail);
|
|
161
177
|
return violations.map((v) => v.message);
|
|
162
178
|
});
|
|
@@ -176,6 +176,11 @@ export declare function CheckMinSteerAxleWeight(_policy: Policy, _vehicleConfigu
|
|
|
176
176
|
* @returns Array of AxleGroupPolicyCheckResult objects with validation results
|
|
177
177
|
*/
|
|
178
178
|
export declare function CheckMinTandemSteerAxleWeight(_policy: Policy, _vehicleConfiguration: Array<string>, axleConfiguration: Array<AxleConfiguration>): Array<PolicyCheckResult>;
|
|
179
|
+
/**
|
|
180
|
+
* Applies the restricted weight rules for non-standard tandem steer/tridem
|
|
181
|
+
* drive picker truck tractors.
|
|
182
|
+
*/
|
|
183
|
+
export declare function CheckPickerTruckTractorWeightRestrictions(policy: Policy, vehicleConfiguration: Array<string>, axleConfiguration: Array<AxleConfiguration>): Array<AxleGroupPolicyCheckResult>;
|
|
179
184
|
/**
|
|
180
185
|
* Validates minimum drive axle weight requirements for tandem and tridem drive power units.
|
|
181
186
|
*
|
|
@@ -296,6 +301,7 @@ export declare function CheckDriveJeepLoadEqualization(_policy: Policy, vehicleC
|
|
|
296
301
|
* - MinDriveAxleWeight: Validates minimum weight requirements for drive axles
|
|
297
302
|
* - MinSteerAxleWeight: Validates minimum weight requirements for steer axles
|
|
298
303
|
* - MinTandemSteerAxleWeight: Validates tandem steer minimum weight requirements
|
|
304
|
+
* - PickerTruckTractorWeightRestrictions: Validates non-standard picker truck tractor restrictions
|
|
299
305
|
* - NumberOfAxles: Validates axle count per axle unit
|
|
300
306
|
* - NumberOfWheelsPerAxle: Validates tire count per axle unit
|
|
301
307
|
* - BoosterAxleLimit: Validates booster axle count against the preceding trailer
|
|
@@ -7,6 +7,7 @@ exports.CheckNumTiresPerAxle = CheckNumTiresPerAxle;
|
|
|
7
7
|
exports.CheckPermittableWeight = CheckPermittableWeight;
|
|
8
8
|
exports.CheckMinSteerAxleWeight = CheckMinSteerAxleWeight;
|
|
9
9
|
exports.CheckMinTandemSteerAxleWeight = CheckMinTandemSteerAxleWeight;
|
|
10
|
+
exports.CheckPickerTruckTractorWeightRestrictions = CheckPickerTruckTractorWeightRestrictions;
|
|
10
11
|
exports.CheckMinDriveAxleWeight = CheckMinDriveAxleWeight;
|
|
11
12
|
exports.CheckMaxTireLoad = CheckMaxTireLoad;
|
|
12
13
|
exports.CheckBoosterAxleLimit = CheckBoosterAxleLimit;
|
|
@@ -387,6 +388,95 @@ function CheckMinTandemSteerAxleWeight(_policy, _vehicleConfiguration, axleConfi
|
|
|
387
388
|
});
|
|
388
389
|
return policyCheckResults;
|
|
389
390
|
}
|
|
391
|
+
/**
|
|
392
|
+
* Applies the restricted weight rules for non-standard tandem steer/tridem
|
|
393
|
+
* drive picker truck tractors.
|
|
394
|
+
*/
|
|
395
|
+
function CheckPickerTruckTractorWeightRestrictions(policy, vehicleConfiguration, axleConfiguration) {
|
|
396
|
+
const policyId = enum_1.PolicyCheckId.PickerTruckTractorWeightRestrictions;
|
|
397
|
+
const MINIMUM_WHEELBASE_CM = 660;
|
|
398
|
+
const MINIMUM_STEER_AXLE_SPREAD_CM = 100;
|
|
399
|
+
const MINIMUM_DRIVE_AXLE_SPREAD_CM = 240;
|
|
400
|
+
const steerAxle = axleConfiguration[0];
|
|
401
|
+
const driveAxle = axleConfiguration[1];
|
|
402
|
+
const doesNotApply = (message = 'Policy check does not apply to this configuration') => [
|
|
403
|
+
{
|
|
404
|
+
id: policyId,
|
|
405
|
+
message,
|
|
406
|
+
result: enum_1.PolicyCheckResultType.Pass,
|
|
407
|
+
startAxleUnit: 1,
|
|
408
|
+
endAxleUnit: 2,
|
|
409
|
+
},
|
|
410
|
+
];
|
|
411
|
+
if (vehicleConfiguration[0] !== 'PICKRTT' ||
|
|
412
|
+
!steerAxle ||
|
|
413
|
+
!driveAxle ||
|
|
414
|
+
steerAxle.numberOfAxles !== 2 ||
|
|
415
|
+
driveAxle.numberOfAxles !== 3) {
|
|
416
|
+
return doesNotApply();
|
|
417
|
+
}
|
|
418
|
+
const hasWheelbaseDimensions = Number.isFinite(steerAxle.axleSpread) &&
|
|
419
|
+
Number.isFinite(driveAxle.interaxleSpacing) &&
|
|
420
|
+
Number.isFinite(driveAxle.axleSpread);
|
|
421
|
+
const wheelbase = hasWheelbaseDimensions
|
|
422
|
+
? steerAxle.axleSpread / 2 +
|
|
423
|
+
driveAxle.interaxleSpacing +
|
|
424
|
+
driveAxle.axleSpread / 2
|
|
425
|
+
: undefined;
|
|
426
|
+
const isNonStandard = (wheelbase !== undefined && wheelbase < MINIMUM_WHEELBASE_CM) ||
|
|
427
|
+
(steerAxle.axleSpread !== undefined &&
|
|
428
|
+
steerAxle.axleSpread < MINIMUM_STEER_AXLE_SPREAD_CM) ||
|
|
429
|
+
(driveAxle.axleSpread !== undefined &&
|
|
430
|
+
driveAxle.axleSpread < MINIMUM_DRIVE_AXLE_SPREAD_CM);
|
|
431
|
+
if (!isNonStandard) {
|
|
432
|
+
return doesNotApply();
|
|
433
|
+
}
|
|
434
|
+
const powerUnitWeights = policy.getDefaultPowerUnitWeight('PICKRTT', 23);
|
|
435
|
+
const steerWeightDimension = policy.selectCorrectWeightDimension(powerUnitWeights, vehicleConfiguration, axleConfiguration, 0);
|
|
436
|
+
const driveWeightDimension = policy.selectCorrectWeightDimension(powerUnitWeights, vehicleConfiguration, axleConfiguration, 1);
|
|
437
|
+
const steerPermittable = steerWeightDimension === null || steerWeightDimension === void 0 ? void 0 : steerWeightDimension.permittable;
|
|
438
|
+
const drivePermittable = driveWeightDimension === null || driveWeightDimension === void 0 ? void 0 : driveWeightDimension.permittable;
|
|
439
|
+
if (steerPermittable === undefined ||
|
|
440
|
+
drivePermittable === undefined ||
|
|
441
|
+
steerAxle.axleUnitWeight > steerPermittable ||
|
|
442
|
+
driveAxle.axleUnitWeight > drivePermittable) {
|
|
443
|
+
return doesNotApply('Policy check does not apply outside configured permittable axle weights');
|
|
444
|
+
}
|
|
445
|
+
const ratioPasses = meetsMinimumSteerPercentageOfDriveAxleWeight(steerAxle, driveAxle, 0.5);
|
|
446
|
+
const hasRealTrailer = vehicleConfiguration.slice(1).some((vehicleType) => {
|
|
447
|
+
const vehicleDefinition = policy.getVehicleDefinition(vehicleType);
|
|
448
|
+
return !(vehicleDefinition === null || vehicleDefinition === void 0 ? void 0 : vehicleDefinition.ignoreForAxleCalculation);
|
|
449
|
+
});
|
|
450
|
+
const exceedsLegalWeight = ((steerWeightDimension === null || steerWeightDimension === void 0 ? void 0 : steerWeightDimension.legal) !== undefined &&
|
|
451
|
+
steerAxle.axleUnitWeight > steerWeightDimension.legal) ||
|
|
452
|
+
((driveWeightDimension === null || driveWeightDimension === void 0 ? void 0 : driveWeightDimension.legal) !== undefined &&
|
|
453
|
+
driveAxle.axleUnitWeight > driveWeightDimension.legal);
|
|
454
|
+
const trailerPasses = !hasRealTrailer || !exceedsLegalWeight;
|
|
455
|
+
return [
|
|
456
|
+
{
|
|
457
|
+
id: policyId,
|
|
458
|
+
message: ratioPasses
|
|
459
|
+
? ''
|
|
460
|
+
: 'Axle Unit 1 must carry a minimum 50% of Axle Unit 2 axle unit weight.',
|
|
461
|
+
result: ratioPasses
|
|
462
|
+
? enum_1.PolicyCheckResultType.Pass
|
|
463
|
+
: enum_1.PolicyCheckResultType.Fail,
|
|
464
|
+
startAxleUnit: 1,
|
|
465
|
+
endAxleUnit: 2,
|
|
466
|
+
},
|
|
467
|
+
{
|
|
468
|
+
id: policyId,
|
|
469
|
+
message: trailerPasses
|
|
470
|
+
? ''
|
|
471
|
+
: 'Cannot tow a trailer if Axle Unit 1 and Axle Unit 2 are exceeding legal axle weights.',
|
|
472
|
+
result: trailerPasses
|
|
473
|
+
? enum_1.PolicyCheckResultType.Pass
|
|
474
|
+
: enum_1.PolicyCheckResultType.Fail,
|
|
475
|
+
startAxleUnit: 1,
|
|
476
|
+
endAxleUnit: 2,
|
|
477
|
+
},
|
|
478
|
+
];
|
|
479
|
+
}
|
|
390
480
|
/**
|
|
391
481
|
* Validates minimum drive axle weight requirements for tandem and tridem drive power units.
|
|
392
482
|
*
|
|
@@ -808,6 +898,7 @@ function CheckDriveJeepLoadEqualization(_policy, vehicleConfiguration, axleConfi
|
|
|
808
898
|
* - MinDriveAxleWeight: Validates minimum weight requirements for drive axles
|
|
809
899
|
* - MinSteerAxleWeight: Validates minimum weight requirements for steer axles
|
|
810
900
|
* - MinTandemSteerAxleWeight: Validates tandem steer minimum weight requirements
|
|
901
|
+
* - PickerTruckTractorWeightRestrictions: Validates non-standard picker truck tractor restrictions
|
|
811
902
|
* - NumberOfAxles: Validates axle count per axle unit
|
|
812
903
|
* - NumberOfWheelsPerAxle: Validates tire count per axle unit
|
|
813
904
|
* - BoosterAxleLimit: Validates booster axle count against the preceding trailer
|
|
@@ -826,6 +917,10 @@ exports.policyCheckMap = new Map([
|
|
|
826
917
|
[enum_1.PolicyCheckId.MinDriveAxleWeight, CheckMinDriveAxleWeight],
|
|
827
918
|
[enum_1.PolicyCheckId.MinSteerAxleWeight, CheckMinSteerAxleWeight],
|
|
828
919
|
[enum_1.PolicyCheckId.MinTandemSteerAxleWeight, CheckMinTandemSteerAxleWeight],
|
|
920
|
+
[
|
|
921
|
+
enum_1.PolicyCheckId.PickerTruckTractorWeightRestrictions,
|
|
922
|
+
CheckPickerTruckTractorWeightRestrictions,
|
|
923
|
+
],
|
|
829
924
|
[enum_1.PolicyCheckId.NumberOfWheelsPerAxle, CheckNumTiresPerAxle],
|
|
830
925
|
[enum_1.PolicyCheckId.BoosterAxleLimit, CheckBoosterAxleLimit],
|
|
831
926
|
[enum_1.PolicyCheckId.TruckTractorWheelbase, CheckTruckTractorWheelbase],
|
package/dist/policy-engine.js
CHANGED
|
@@ -60,7 +60,7 @@ class Policy {
|
|
|
60
60
|
* @returns Results of the validation of the permit application
|
|
61
61
|
*/
|
|
62
62
|
async validate(permit) {
|
|
63
|
-
var _a, _b;
|
|
63
|
+
var _a, _b, _c, _d;
|
|
64
64
|
const engine = this.rulesEngines.get(permit.permitType);
|
|
65
65
|
if (!engine) {
|
|
66
66
|
// If the permit type being validated has no configuration in the
|
|
@@ -78,13 +78,19 @@ class Policy {
|
|
|
78
78
|
const engineResult = await engine.run(permit);
|
|
79
79
|
// Wrap the json-rules-engine result in a ValidationResult object
|
|
80
80
|
const validationResults = new validation_results_1.ValidationResults(engineResult);
|
|
81
|
+
const shouldIncludeAxleCalculationResults = permit.permitType === 'STOW' &&
|
|
82
|
+
((_b = (_a = permit.permitData) === null || _a === void 0 ? void 0 : _a.vehicleConfiguration) === null || _b === void 0 ? void 0 : _b.axleConfiguration);
|
|
83
|
+
if (shouldIncludeAxleCalculationResults) {
|
|
84
|
+
validationResults.axleCalculationResults =
|
|
85
|
+
await engineResult.almanac.factValue('axleCalcResults');
|
|
86
|
+
}
|
|
81
87
|
// Include an informational message if the client is an LCV carrier
|
|
82
|
-
if ((
|
|
88
|
+
if ((_c = this.specialAuthorizations) === null || _c === void 0 ? void 0 : _c.isLcvAllowed) {
|
|
83
89
|
validationResults.information.push(new validation_result_1.ValidationResult(enum_1.ValidationResultType.Information, enum_1.ValidationResultCode.IsLcvCarrier, `Policy validation allowing long combination vehicle permitting for client '${this.specialAuthorizations.companyId}'`));
|
|
84
90
|
}
|
|
85
91
|
// Include an informational message and adjust the cost if the client
|
|
86
92
|
// has a no fee flag set.
|
|
87
|
-
if ((
|
|
93
|
+
if ((_d = this.specialAuthorizations) === null || _d === void 0 ? void 0 : _d.noFeeType) {
|
|
88
94
|
const originalPermitCost = validationResults === null || validationResults === void 0 ? void 0 : validationResults.cost.reduce((accumulator, { cost }) => accumulator + (cost !== null && cost !== void 0 ? cost : 0), 0);
|
|
89
95
|
// Clear the cost array and replace with zero cost
|
|
90
96
|
validationResults.cost.length = 0;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EngineResult } from 'json-rules-engine';
|
|
2
2
|
import { ValidationResult } from './validation-result';
|
|
3
|
+
import { AxleCalcResults } from './types/axle-calculation-results';
|
|
3
4
|
/** Represents the results of a permit application validation against policy */
|
|
4
5
|
export declare class ValidationResults {
|
|
5
6
|
/** Array of policy violations found during validation. */
|
|
@@ -23,6 +24,12 @@ export declare class ValidationResults {
|
|
|
23
24
|
* one cost message, all should be summed to get the total permit cost.
|
|
24
25
|
*/
|
|
25
26
|
cost: Array<ValidationResult>;
|
|
27
|
+
/**
|
|
28
|
+
* Structured axle-spacing-and-weights policy-check results. This mirrors
|
|
29
|
+
* runAxleCalculation() so consumers can highlight ASW fields while
|
|
30
|
+
* violations remains the coarse validation-gating signal.
|
|
31
|
+
*/
|
|
32
|
+
axleCalculationResults?: AxleCalcResults;
|
|
26
33
|
/**
|
|
27
34
|
* Creates a new ValidationResults from the json-rules-engine result.
|
|
28
35
|
* Populates the violations, requirements, warnings, and messages arrays
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "v2.
|
|
1
|
+
export declare const version = "v2.17.0";
|
package/dist/version.js
CHANGED
package/package.json
CHANGED