@valkyrjaio/sindri 26.1.3 → 26.2.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.
@@ -211607,7 +211607,7 @@ var require_commonjs2 = __commonJS({
211607
211607
  "node_modules/brace-expansion/dist/commonjs/index.js"(exports2) {
211608
211608
  "use strict";
211609
211609
  Object.defineProperty(exports2, "__esModule", { value: true });
211610
- exports2.EXPANSION_MAX = void 0;
211610
+ exports2.EXPANSION_MAX_LENGTH = exports2.EXPANSION_MAX = void 0;
211611
211611
  exports2.expand = expand;
211612
211612
  var balanced_match_1 = require_commonjs();
211613
211613
  var escSlash = "\0SLASH" + Math.random() + "\0";
@@ -211626,6 +211626,7 @@ var require_commonjs2 = __commonJS({
211626
211626
  var commaPattern = /\\,/g;
211627
211627
  var periodPattern = /\\\./g;
211628
211628
  exports2.EXPANSION_MAX = 1e5;
211629
+ exports2.EXPANSION_MAX_LENGTH = 4e6;
211629
211630
  function numeric(str) {
211630
211631
  return !isNaN(str) ? parseInt(str, 10) : str.charCodeAt(0);
211631
211632
  }
@@ -211660,11 +211661,11 @@ var require_commonjs2 = __commonJS({
211660
211661
  if (!str) {
211661
211662
  return [];
211662
211663
  }
211663
- const { max = exports2.EXPANSION_MAX } = options;
211664
+ const { max = exports2.EXPANSION_MAX, maxLength = exports2.EXPANSION_MAX_LENGTH } = options;
211664
211665
  if (str.slice(0, 2) === "{}") {
211665
211666
  str = "\\{\\}" + str.slice(2);
211666
211667
  }
211667
- return expand_(escapeBraces(str), max, true).map(unescapeBraces);
211668
+ return expand_(escapeBraces(str), max, maxLength, true).map(unescapeBraces);
211668
211669
  }
211669
211670
  function embrace(str) {
211670
211671
  return "{" + str + "}";
@@ -211678,19 +211679,84 @@ var require_commonjs2 = __commonJS({
211678
211679
  function gte(i, y) {
211679
211680
  return i >= y;
211680
211681
  }
211681
- function expand_(str, max, isTop) {
211682
- const expansions = [];
211683
- const m = (0, balanced_match_1.balanced)("{", "}", str);
211684
- if (!m)
211685
- return [str];
211686
- const pre = m.pre;
211687
- const post = m.post.length ? expand_(m.post, max, false) : [""];
211688
- if (/\$$/.test(m.pre)) {
211689
- for (let k = 0; k < post.length && k < max; k++) {
211690
- const expansion = pre + "{" + m.body + "}" + post[k];
211691
- expansions.push(expansion);
211682
+ function combine(acc, pre, values, max, maxLength, dropEmpties) {
211683
+ const out = [];
211684
+ let length = 0;
211685
+ for (let a = 0; a < acc.length; a++) {
211686
+ for (let v = 0; v < values.length; v++) {
211687
+ if (out.length >= max)
211688
+ return out;
211689
+ const expansion = acc[a] + pre + values[v];
211690
+ if (dropEmpties && !expansion)
211691
+ continue;
211692
+ if (length + expansion.length > maxLength)
211693
+ return out;
211694
+ out.push(expansion);
211695
+ length += expansion.length;
211696
+ }
211697
+ }
211698
+ return out;
211699
+ }
211700
+ function expandSequence(body, isAlphaSequence, max) {
211701
+ const n = body.split(/\.\./);
211702
+ const N = [];
211703
+ if (n[0] === void 0 || n[1] === void 0) {
211704
+ return N;
211705
+ }
211706
+ const x = numeric(n[0]);
211707
+ const y = numeric(n[1]);
211708
+ const width = Math.max(n[0].length, n[1].length);
211709
+ let incr = n.length === 3 && n[2] !== void 0 ? Math.max(Math.abs(numeric(n[2])), 1) : 1;
211710
+ let test = lte;
211711
+ const reverse = y < x;
211712
+ if (reverse) {
211713
+ incr *= -1;
211714
+ test = gte;
211715
+ }
211716
+ const pad = n.some(isPadded);
211717
+ for (let i = x; test(i, y) && N.length < max; i += incr) {
211718
+ let c;
211719
+ if (isAlphaSequence) {
211720
+ c = String.fromCharCode(i);
211721
+ if (c === "\\") {
211722
+ c = "";
211723
+ }
211724
+ } else {
211725
+ c = String(i);
211726
+ if (pad) {
211727
+ const need = width - c.length;
211728
+ if (need > 0) {
211729
+ const z = new Array(need + 1).join("0");
211730
+ if (i < 0) {
211731
+ c = "-" + z + c.slice(1);
211732
+ } else {
211733
+ c = z + c;
211734
+ }
211735
+ }
211736
+ }
211737
+ }
211738
+ N.push(c);
211739
+ }
211740
+ return N;
211741
+ }
211742
+ function expand_(str, max, maxLength, isTop) {
211743
+ let acc = [""];
211744
+ let dropEmpties = false;
211745
+ let firstGroup = true;
211746
+ for (; ; ) {
211747
+ const m = (0, balanced_match_1.balanced)("{", "}", str);
211748
+ if (!m) {
211749
+ return combine(acc, str, [""], max, maxLength, dropEmpties);
211750
+ }
211751
+ const pre = m.pre;
211752
+ if (/\$$/.test(pre)) {
211753
+ acc = combine(acc, pre + "{" + m.body + "}", [""], max, maxLength, dropEmpties && !m.post.length);
211754
+ firstGroup = false;
211755
+ if (!m.post.length)
211756
+ break;
211757
+ str = m.post;
211758
+ continue;
211692
211759
  }
211693
- } else {
211694
211760
  const isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
211695
211761
  const isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
211696
211762
  const isSequence = isNumericSequence || isAlphaSequence;
@@ -211698,75 +211764,41 @@ var require_commonjs2 = __commonJS({
211698
211764
  if (!isSequence && !isOptions) {
211699
211765
  if (m.post.match(/,(?!,).*\}/)) {
211700
211766
  str = m.pre + "{" + m.body + escClose + m.post;
211701
- return expand_(str, max, true);
211767
+ isTop = true;
211768
+ continue;
211702
211769
  }
211703
- return [str];
211770
+ return combine(acc, pre + "{" + m.body + "}" + m.post, [""], max, maxLength, dropEmpties);
211704
211771
  }
211705
- let n;
211772
+ if (firstGroup) {
211773
+ dropEmpties = isTop && !isSequence;
211774
+ firstGroup = false;
211775
+ }
211776
+ let values;
211706
211777
  if (isSequence) {
211707
- n = m.body.split(/\.\./);
211778
+ values = expandSequence(m.body, isAlphaSequence, max);
211708
211779
  } else {
211709
- n = parseCommaParts(m.body);
211780
+ let n = parseCommaParts(m.body);
211710
211781
  if (n.length === 1 && n[0] !== void 0) {
211711
- n = expand_(n[0], max, false).map(embrace);
211782
+ n = expand_(n[0], max, maxLength, false).map(embrace);
211712
211783
  if (n.length === 1) {
211713
- return post.map((p) => m.pre + n[0] + p);
211714
- }
211715
- }
211716
- }
211717
- let N;
211718
- if (isSequence && n[0] !== void 0 && n[1] !== void 0) {
211719
- const x = numeric(n[0]);
211720
- const y = numeric(n[1]);
211721
- const width = Math.max(n[0].length, n[1].length);
211722
- let incr = n.length === 3 && n[2] !== void 0 ? Math.max(Math.abs(numeric(n[2])), 1) : 1;
211723
- let test = lte;
211724
- const reverse = y < x;
211725
- if (reverse) {
211726
- incr *= -1;
211727
- test = gte;
211728
- }
211729
- const pad = n.some(isPadded);
211730
- N = [];
211731
- for (let i = x; test(i, y) && N.length < max; i += incr) {
211732
- let c;
211733
- if (isAlphaSequence) {
211734
- c = String.fromCharCode(i);
211735
- if (c === "\\") {
211736
- c = "";
211737
- }
211738
- } else {
211739
- c = String(i);
211740
- if (pad) {
211741
- const need = width - c.length;
211742
- if (need > 0) {
211743
- const z = new Array(need + 1).join("0");
211744
- if (i < 0) {
211745
- c = "-" + z + c.slice(1);
211746
- } else {
211747
- c = z + c;
211748
- }
211749
- }
211750
- }
211784
+ acc = combine(acc, pre + n[0], [""], max, maxLength, dropEmpties && !m.post.length);
211785
+ if (!m.post.length)
211786
+ break;
211787
+ str = m.post;
211788
+ continue;
211751
211789
  }
211752
- N.push(c);
211753
211790
  }
211754
- } else {
211755
- N = [];
211791
+ values = [];
211756
211792
  for (let j = 0; j < n.length; j++) {
211757
- N.push.apply(N, expand_(n[j], max, false));
211758
- }
211759
- }
211760
- for (let j = 0; j < N.length; j++) {
211761
- for (let k = 0; k < post.length && expansions.length < max; k++) {
211762
- const expansion = pre + N[j] + post[k];
211763
- if (!isTop || isSequence || expansion) {
211764
- expansions.push(expansion);
211765
- }
211793
+ values.push.apply(values, expand_(n[j], max, maxLength, false));
211766
211794
  }
211767
211795
  }
211796
+ acc = combine(acc, pre, values, max, maxLength, dropEmpties && !m.post.length);
211797
+ if (!m.post.length)
211798
+ break;
211799
+ str = m.post;
211768
211800
  }
211769
- return expansions;
211801
+ return acc;
211770
211802
  }
211771
211803
  }
211772
211804
  });
@@ -214614,7 +214646,11 @@ var require_parse = __commonJS({
214614
214646
  }
214615
214647
  }
214616
214648
  };
214617
- var getStarExtglobSequenceOutput = (pattern) => {
214649
+ var buildCharClassStar = (chars) => {
214650
+ const source = chars.length === 1 ? utils.escapeRegex(chars[0]) : `[${chars.map((ch) => utils.escapeRegex(ch)).join("")}]`;
214651
+ return `${source}*`;
214652
+ };
214653
+ var getStarExtglobSequenceChars = (pattern) => {
214618
214654
  let index = 0;
214619
214655
  const chars = [];
214620
214656
  while (index < pattern.length) {
@@ -214636,8 +214672,7 @@ var require_parse = __commonJS({
214636
214672
  if (chars.length < 1) {
214637
214673
  return;
214638
214674
  }
214639
- const source = chars.length === 1 ? utils.escapeRegex(chars[0]) : `[${chars.map((ch) => utils.escapeRegex(ch)).join("")}]`;
214640
- return `${source}*`;
214675
+ return chars;
214641
214676
  };
214642
214677
  var repeatedExtglobRecursion = (pattern) => {
214643
214678
  let depth = 0;
@@ -214661,15 +214696,29 @@ var require_parse = __commonJS({
214661
214696
  return { risky: true };
214662
214697
  }
214663
214698
  }
214699
+ const safeChars = [];
214700
+ let sawStarSequence = false;
214701
+ let combinable = true;
214664
214702
  for (const branch of branches) {
214665
- const safeOutput = getStarExtglobSequenceOutput(branch);
214666
- if (safeOutput) {
214667
- return { risky: true, safeOutput };
214703
+ const chars = getStarExtglobSequenceChars(branch);
214704
+ if (chars) {
214705
+ sawStarSequence = true;
214706
+ safeChars.push(...chars);
214707
+ continue;
214708
+ }
214709
+ const literal = normalizeSimpleBranch(branch);
214710
+ if (literal && literal.length === 1) {
214711
+ safeChars.push(literal);
214712
+ continue;
214668
214713
  }
214714
+ combinable = false;
214669
214715
  if (repeatedExtglobRecursion(branch) > max) {
214670
214716
  return { risky: true };
214671
214717
  }
214672
214718
  }
214719
+ if (sawStarSequence) {
214720
+ return combinable ? { risky: true, safeOutput: buildCharClassStar([...new Set(safeChars)]) } : { risky: true };
214721
+ }
214673
214722
  return { risky: false };
214674
214723
  };
214675
214724
  var parse = (input, options) => {
@@ -215519,9 +215568,9 @@ var require_picomatch = __commonJS({
215519
215568
  }
215520
215569
  return { isMatch: Boolean(match), match, output };
215521
215570
  };
215522
- picomatch.matchBase = (input, glob, options) => {
215571
+ picomatch.matchBase = (input, glob, options, posix = options && options.windows) => {
215523
215572
  const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);
215524
- return regex.test(utils.basename(input));
215573
+ return regex.test(utils.basename(input, { windows: posix }));
215525
215574
  };
215526
215575
  picomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);
215527
215576
  picomatch.parse = (pattern, options) => {
@@ -241756,31 +241805,9 @@ var CliInteractionExpectedQuestionOutputException = class extends CliInteraction
241756
241805
  };
241757
241806
 
241758
241807
  // node_modules/@valkyrjaio/valkyrja/src/Valkyrja/Cli/Interaction/Enum/TextColor.ts
241759
- var TextColor = /* @__PURE__ */ ((TextColor2) => {
241760
- TextColor2[TextColor2["BLACK"] = 30] = "BLACK";
241761
- TextColor2[TextColor2["RED"] = 31] = "RED";
241762
- TextColor2[TextColor2["GREEN"] = 32] = "GREEN";
241763
- TextColor2[TextColor2["YELLOW"] = 33] = "YELLOW";
241764
- TextColor2[TextColor2["BLUE"] = 34] = "BLUE";
241765
- TextColor2[TextColor2["MAGENTA"] = 35] = "MAGENTA";
241766
- TextColor2[TextColor2["CYAN"] = 36] = "CYAN";
241767
- TextColor2[TextColor2["WHITE"] = 37] = "WHITE";
241768
- TextColor2[TextColor2["DARK_GRAY"] = 90] = "DARK_GRAY";
241769
- TextColor2[TextColor2["LIGHT_RED"] = 91] = "LIGHT_RED";
241770
- TextColor2[TextColor2["LIGHT_GREEN"] = 92] = "LIGHT_GREEN";
241771
- TextColor2[TextColor2["LIGHT_YELLOW"] = 93] = "LIGHT_YELLOW";
241772
- TextColor2[TextColor2["LIGHT_BLUE"] = 94] = "LIGHT_BLUE";
241773
- TextColor2[TextColor2["LIGHT_MAGENTA"] = 95] = "LIGHT_MAGENTA";
241774
- TextColor2[TextColor2["LIGHT_CYAN"] = 96] = "LIGHT_CYAN";
241775
- TextColor2[TextColor2["LIGHT_WHITE"] = 97] = "LIGHT_WHITE";
241776
- return TextColor2;
241777
- })(TextColor || {});
241778
- ((TextColor2) => {
241779
- function getDefault() {
241780
- return 39;
241781
- }
241782
- TextColor2.getDefault = getDefault;
241783
- })(TextColor || (TextColor = {}));
241808
+ function textColorDefault() {
241809
+ return 39;
241810
+ }
241784
241811
 
241785
241812
  // node_modules/@valkyrjaio/valkyrja/src/Valkyrja/Cli/Interaction/Format/Format.ts
241786
241813
  var Format = class {
@@ -241811,7 +241838,7 @@ var Format = class {
241811
241838
  // node_modules/@valkyrjaio/valkyrja/src/Valkyrja/Cli/Interaction/Format/TextColorFormat.ts
241812
241839
  var TextColorFormat = class extends Format {
241813
241840
  constructor(textColor) {
241814
- super(String(textColor), String(TextColor.getDefault()));
241841
+ super(String(textColor), String(textColorDefault()));
241815
241842
  }
241816
241843
  };
241817
241844
 
@@ -242351,7 +242378,7 @@ var CliRoutingNoHelpTextException = class extends CliRoutingRuntimeException {
242351
242378
 
242352
242379
  // node_modules/@valkyrjaio/valkyrja/src/Valkyrja/Cli/Routing/Data/Route.ts
242353
242380
  var Route = class {
242354
- constructor(name, description, handler, helpText = null, routeMatchedMiddleware = [], routeDispatchedMiddleware = [], throwableCaughtMiddleware = [], exitedMiddleware = [], arguments_ = [], options = []) {
242381
+ constructor(name, description, handler, helpText = null, routeMatchedMiddleware = [], routeDispatchedMiddleware = [], throwableCaughtMiddleware = [], processExitingMiddleware = [], arguments_ = [], options = []) {
242355
242382
  this.name = name;
242356
242383
  this.description = description;
242357
242384
  this.handler = handler;
@@ -242359,7 +242386,7 @@ var Route = class {
242359
242386
  this.routeMatchedMiddleware = routeMatchedMiddleware;
242360
242387
  this.routeDispatchedMiddleware = routeDispatchedMiddleware;
242361
242388
  this.throwableCaughtMiddleware = throwableCaughtMiddleware;
242362
- this.exitedMiddleware = exitedMiddleware;
242389
+ this.processExitingMiddleware = processExitingMiddleware;
242363
242390
  this.arguments_ = arguments_;
242364
242391
  this.options = options;
242365
242392
  }
@@ -242370,7 +242397,7 @@ var Route = class {
242370
242397
  routeMatchedMiddleware;
242371
242398
  routeDispatchedMiddleware;
242372
242399
  throwableCaughtMiddleware;
242373
- exitedMiddleware;
242400
+ processExitingMiddleware;
242374
242401
  arguments_;
242375
242402
  options;
242376
242403
  getName() {
@@ -242497,17 +242524,17 @@ var Route = class {
242497
242524
  clone.throwableCaughtMiddleware = [...this.throwableCaughtMiddleware, ...middleware];
242498
242525
  return clone;
242499
242526
  }
242500
- getExitedMiddleware() {
242501
- return this.exitedMiddleware;
242527
+ getProcessExitingMiddleware() {
242528
+ return this.processExitingMiddleware;
242502
242529
  }
242503
- withExitedMiddleware(...middleware) {
242530
+ withProcessExitingMiddleware(...middleware) {
242504
242531
  const clone = ObjectFactory.clone(this);
242505
- clone.exitedMiddleware = middleware;
242532
+ clone.processExitingMiddleware = middleware;
242506
242533
  return clone;
242507
242534
  }
242508
- withAddedExitedMiddleware(...middleware) {
242535
+ withAddedProcessExitingMiddleware(...middleware) {
242509
242536
  const clone = ObjectFactory.clone(this);
242510
- clone.exitedMiddleware = [...this.exitedMiddleware, ...middleware];
242537
+ clone.processExitingMiddleware = [...this.processExitingMiddleware, ...middleware];
242511
242538
  return clone;
242512
242539
  }
242513
242540
  getHandler() {
@@ -243015,7 +243042,7 @@ var RouteAttributeReader = class extends AstReader {
243015
243042
 
243016
243043
  // src/Sindri/Ast/Data/CliRouteData.ts
243017
243044
  var CliRouteData = class {
243018
- constructor(name, description, handler = null, helpText = null, routeMatchedMiddleware = [], routeDispatchedMiddleware = [], throwableCaughtMiddleware = [], exitedMiddleware = [], args = [], options = []) {
243045
+ constructor(name, description, handler = null, helpText = null, routeMatchedMiddleware = [], routeDispatchedMiddleware = [], throwableCaughtMiddleware = [], processExitingMiddleware = [], args = [], options = []) {
243019
243046
  this.name = name;
243020
243047
  this.description = description;
243021
243048
  this.handler = handler;
@@ -243023,7 +243050,7 @@ var CliRouteData = class {
243023
243050
  this.routeMatchedMiddleware = routeMatchedMiddleware;
243024
243051
  this.routeDispatchedMiddleware = routeDispatchedMiddleware;
243025
243052
  this.throwableCaughtMiddleware = throwableCaughtMiddleware;
243026
- this.exitedMiddleware = exitedMiddleware;
243053
+ this.processExitingMiddleware = processExitingMiddleware;
243027
243054
  this.options = options;
243028
243055
  this.arguments = args;
243029
243056
  }
@@ -243034,7 +243061,7 @@ var CliRouteData = class {
243034
243061
  routeMatchedMiddleware;
243035
243062
  routeDispatchedMiddleware;
243036
243063
  throwableCaughtMiddleware;
243037
- exitedMiddleware;
243064
+ processExitingMiddleware;
243038
243065
  options;
243039
243066
  arguments;
243040
243067
  };
@@ -243258,7 +243285,7 @@ var CliRouteAttributeReader = class extends RouteAttributeReader {
243258
243285
  return null;
243259
243286
  }
243260
243287
  const updatedName = this.updateName(name, method, useMap, currentFilePath, currentClass);
243261
- const [routeMatchedMiddleware, routeDispatchedMiddleware, throwableCaughtMiddleware, exitedMiddleware] = this.updateMiddleware(
243288
+ const [routeMatchedMiddleware, routeDispatchedMiddleware, throwableCaughtMiddleware, processExitingMiddleware] = this.updateMiddleware(
243262
243289
  method,
243263
243290
  useMap,
243264
243291
  currentFilePath,
@@ -243276,7 +243303,7 @@ var CliRouteAttributeReader = class extends RouteAttributeReader {
243276
243303
  routeMatchedMiddleware,
243277
243304
  routeDispatchedMiddleware,
243278
243305
  throwableCaughtMiddleware,
243279
- exitedMiddleware,
243306
+ processExitingMiddleware,
243280
243307
  this.parameterReader.updateArguments(method, useMap, currentFilePath, currentClass),
243281
243308
  this.parameterReader.updateOptions(method, useMap, currentFilePath, currentClass)
243282
243309
  );
@@ -243295,7 +243322,7 @@ var CliRouteAttributeReader = class extends RouteAttributeReader {
243295
243322
  }
243296
243323
  return name;
243297
243324
  }
243298
- updateMiddleware(method, useMap, currentFilePath, currentClass, routeMatchedMiddleware, routeDispatchedMiddleware, throwableCaughtMiddleware, exitedMiddleware) {
243325
+ updateMiddleware(method, useMap, currentFilePath, currentClass, routeMatchedMiddleware, routeDispatchedMiddleware, throwableCaughtMiddleware, processExitingMiddleware) {
243299
243326
  for (const decorator of this.findDecoratorsOnNode(method, "Middleware", useMap, currentFilePath)) {
243300
243327
  const mwName = this.extractExprValue(
243301
243328
  this.getDecoratorArg(decorator, 0),
@@ -243306,19 +243333,19 @@ var CliRouteAttributeReader = class extends RouteAttributeReader {
243306
243333
  if (typeof mwName !== "string" || mwName === "") {
243307
243334
  continue;
243308
243335
  }
243309
- [routeMatchedMiddleware, routeDispatchedMiddleware, throwableCaughtMiddleware, exitedMiddleware] = this.classifyMiddleware(
243336
+ [routeMatchedMiddleware, routeDispatchedMiddleware, throwableCaughtMiddleware, processExitingMiddleware] = this.classifyMiddleware(
243310
243337
  mwName,
243311
243338
  useMap,
243312
243339
  currentFilePath,
243313
243340
  routeMatchedMiddleware,
243314
243341
  routeDispatchedMiddleware,
243315
243342
  throwableCaughtMiddleware,
243316
- exitedMiddleware
243343
+ processExitingMiddleware
243317
243344
  );
243318
243345
  }
243319
- return [routeMatchedMiddleware, routeDispatchedMiddleware, throwableCaughtMiddleware, exitedMiddleware];
243346
+ return [routeMatchedMiddleware, routeDispatchedMiddleware, throwableCaughtMiddleware, processExitingMiddleware];
243320
243347
  }
243321
- classifyMiddleware(mwName, useMap, currentFilePath, routeMatchedMiddleware, routeDispatchedMiddleware, throwableCaughtMiddleware, exitedMiddleware) {
243348
+ classifyMiddleware(mwName, useMap, currentFilePath, routeMatchedMiddleware, routeDispatchedMiddleware, throwableCaughtMiddleware, processExitingMiddleware) {
243322
243349
  if (this.classImplementsInterface(mwName, "RouteMatchedMiddlewareContract", useMap, currentFilePath)) {
243323
243350
  routeMatchedMiddleware = [...routeMatchedMiddleware, mwName];
243324
243351
  }
@@ -243328,10 +243355,10 @@ var CliRouteAttributeReader = class extends RouteAttributeReader {
243328
243355
  if (this.classImplementsInterface(mwName, "ThrowableCaughtMiddlewareContract", useMap, currentFilePath)) {
243329
243356
  throwableCaughtMiddleware = [...throwableCaughtMiddleware, mwName];
243330
243357
  }
243331
- if (this.classImplementsInterface(mwName, "ExitedMiddlewareContract", useMap, currentFilePath)) {
243332
- exitedMiddleware = [...exitedMiddleware, mwName];
243358
+ if (this.classImplementsInterface(mwName, "ProcessExitingMiddlewareContract", useMap, currentFilePath)) {
243359
+ processExitingMiddleware = [...processExitingMiddleware, mwName];
243333
243360
  }
243334
- return [routeMatchedMiddleware, routeDispatchedMiddleware, throwableCaughtMiddleware, exitedMiddleware];
243361
+ return [routeMatchedMiddleware, routeDispatchedMiddleware, throwableCaughtMiddleware, processExitingMiddleware];
243335
243362
  }
243336
243363
  buildRouteExpr(data) {
243337
243364
  const args = [this.buildEnumCaseExpr(data.name), this.buildStringExpr(data.description)];
@@ -243354,7 +243381,7 @@ var CliRouteAttributeReader = class extends RouteAttributeReader {
243354
243381
  this.buildClassArrayExpr(data.routeMatchedMiddleware),
243355
243382
  this.buildClassArrayExpr(data.routeDispatchedMiddleware),
243356
243383
  this.buildClassArrayExpr(data.throwableCaughtMiddleware),
243357
- this.buildClassArrayExpr(data.exitedMiddleware)
243384
+ this.buildClassArrayExpr(data.processExitingMiddleware)
243358
243385
  ];
243359
243386
  }
243360
243387
  };
@@ -243565,7 +243592,7 @@ var ConfigReader = class extends AstReader {
243565
243592
 
243566
243593
  // src/Sindri/Ast/Data/HttpRouteData.ts
243567
243594
  var HttpRouteData = class {
243568
- constructor(path4, name, handler = null, requestMethods = [], routeMatchedMiddleware = [], routeDispatchedMiddleware = [], throwableCaughtMiddleware = [], sendingResponseMiddleware = [], terminatedMiddleware = [], requestStruct = null, responseStruct = null, isDynamic = false, parameters = []) {
243595
+ constructor(path4, name, handler = null, requestMethods = [], routeMatchedMiddleware = [], routeDispatchedMiddleware = [], throwableCaughtMiddleware = [], sendingResponseMiddleware = [], responseSentMiddleware = [], requestStruct = null, responseStruct = null, isDynamic = false, parameters = []) {
243569
243596
  this.path = path4;
243570
243597
  this.name = name;
243571
243598
  this.handler = handler;
@@ -243574,7 +243601,7 @@ var HttpRouteData = class {
243574
243601
  this.routeDispatchedMiddleware = routeDispatchedMiddleware;
243575
243602
  this.throwableCaughtMiddleware = throwableCaughtMiddleware;
243576
243603
  this.sendingResponseMiddleware = sendingResponseMiddleware;
243577
- this.terminatedMiddleware = terminatedMiddleware;
243604
+ this.responseSentMiddleware = responseSentMiddleware;
243578
243605
  this.requestStruct = requestStruct;
243579
243606
  this.responseStruct = responseStruct;
243580
243607
  this.isDynamic = isDynamic;
@@ -243588,7 +243615,7 @@ var HttpRouteData = class {
243588
243615
  routeDispatchedMiddleware;
243589
243616
  throwableCaughtMiddleware;
243590
243617
  sendingResponseMiddleware;
243591
- terminatedMiddleware;
243618
+ responseSentMiddleware;
243592
243619
  requestStruct;
243593
243620
  responseStruct;
243594
243621
  isDynamic;
@@ -243632,7 +243659,7 @@ var HttpRouteMiddlewareReader = class extends AstReader {
243632
243659
  }
243633
243660
  return requestMethods;
243634
243661
  }
243635
- updateMiddleware(method, useMap, namespace, currentClass, routeMatchedMiddleware, routeDispatchedMiddleware, throwableCaughtMiddleware, sendingResponseMiddleware, terminatedMiddleware) {
243662
+ updateMiddleware(method, useMap, namespace, currentClass, routeMatchedMiddleware, routeDispatchedMiddleware, throwableCaughtMiddleware, sendingResponseMiddleware, responseSentMiddleware) {
243636
243663
  for (const decorator of this.findDecoratorsOnNode(method, "Middleware", useMap, namespace)) {
243637
243664
  const mwName = this.extractExprValue(this.getDecoratorArg(decorator, 0), useMap, namespace, currentClass);
243638
243665
  if (typeof mwName !== "string" || mwName === "") {
@@ -243643,7 +243670,7 @@ var HttpRouteMiddlewareReader = class extends AstReader {
243643
243670
  routeDispatchedMiddleware,
243644
243671
  throwableCaughtMiddleware,
243645
243672
  sendingResponseMiddleware,
243646
- terminatedMiddleware
243673
+ responseSentMiddleware
243647
243674
  ] = this.classifyMiddleware(
243648
243675
  mwName,
243649
243676
  useMap,
@@ -243652,7 +243679,7 @@ var HttpRouteMiddlewareReader = class extends AstReader {
243652
243679
  routeDispatchedMiddleware,
243653
243680
  throwableCaughtMiddleware,
243654
243681
  sendingResponseMiddleware,
243655
- terminatedMiddleware
243682
+ responseSentMiddleware
243656
243683
  );
243657
243684
  }
243658
243685
  return [
@@ -243660,7 +243687,7 @@ var HttpRouteMiddlewareReader = class extends AstReader {
243660
243687
  routeDispatchedMiddleware,
243661
243688
  throwableCaughtMiddleware,
243662
243689
  sendingResponseMiddleware,
243663
- terminatedMiddleware
243690
+ responseSentMiddleware
243664
243691
  ];
243665
243692
  }
243666
243693
  updateRequestStruct(method, useMap, namespace, currentClass) {
@@ -243687,7 +243714,7 @@ var HttpRouteMiddlewareReader = class extends AstReader {
243687
243714
  this.buildClassIdentifierArrayExpr(data.routeDispatchedMiddleware),
243688
243715
  this.buildClassIdentifierArrayExpr(data.throwableCaughtMiddleware),
243689
243716
  this.buildClassIdentifierArrayExpr(data.sendingResponseMiddleware),
243690
- this.buildClassIdentifierArrayExpr(data.terminatedMiddleware)
243717
+ this.buildClassIdentifierArrayExpr(data.responseSentMiddleware)
243691
243718
  ];
243692
243719
  }
243693
243720
  buildRouteStructArgs(data) {
@@ -243704,7 +243731,7 @@ var HttpRouteMiddlewareReader = class extends AstReader {
243704
243731
  }
243705
243732
  return args;
243706
243733
  }
243707
- classifyMiddleware(mwName, useMap, currentFilePath, routeMatchedMiddleware, routeDispatchedMiddleware, throwableCaughtMiddleware, sendingResponseMiddleware, terminatedMiddleware) {
243734
+ classifyMiddleware(mwName, useMap, currentFilePath, routeMatchedMiddleware, routeDispatchedMiddleware, throwableCaughtMiddleware, sendingResponseMiddleware, responseSentMiddleware) {
243708
243735
  if (this.classImplementsInterface(mwName, "RouteMatchedMiddlewareContract", useMap, currentFilePath)) {
243709
243736
  routeMatchedMiddleware = [...routeMatchedMiddleware, mwName];
243710
243737
  }
@@ -243717,15 +243744,15 @@ var HttpRouteMiddlewareReader = class extends AstReader {
243717
243744
  if (this.classImplementsInterface(mwName, "SendingResponseMiddlewareContract", useMap, currentFilePath)) {
243718
243745
  sendingResponseMiddleware = [...sendingResponseMiddleware, mwName];
243719
243746
  }
243720
- if (this.classImplementsInterface(mwName, "TerminatedMiddlewareContract", useMap, currentFilePath)) {
243721
- terminatedMiddleware = [...terminatedMiddleware, mwName];
243747
+ if (this.classImplementsInterface(mwName, "ResponseSentMiddlewareContract", useMap, currentFilePath)) {
243748
+ responseSentMiddleware = [...responseSentMiddleware, mwName];
243722
243749
  }
243723
243750
  return [
243724
243751
  routeMatchedMiddleware,
243725
243752
  routeDispatchedMiddleware,
243726
243753
  throwableCaughtMiddleware,
243727
243754
  sendingResponseMiddleware,
243728
- terminatedMiddleware
243755
+ responseSentMiddleware
243729
243756
  ];
243730
243757
  }
243731
243758
  };
@@ -243961,7 +243988,7 @@ var HttpRouteAttributeReader = class extends RouteAttributeReader {
243961
243988
  routeDispatchedMiddleware,
243962
243989
  throwableCaughtMiddleware,
243963
243990
  sendingResponseMiddleware,
243964
- terminatedMiddleware
243991
+ responseSentMiddleware
243965
243992
  ] = this.middlewareReader.updateMiddleware(
243966
243993
  method,
243967
243994
  useMap,
@@ -243982,7 +244009,7 @@ var HttpRouteAttributeReader = class extends RouteAttributeReader {
243982
244009
  routeDispatchedMiddleware,
243983
244010
  throwableCaughtMiddleware,
243984
244011
  sendingResponseMiddleware,
243985
- terminatedMiddleware,
244012
+ responseSentMiddleware,
243986
244013
  this.middlewareReader.updateRequestStruct(method, useMap, currentFilePath, currentClass),
243987
244014
  this.middlewareReader.updateResponseStruct(method, useMap, currentFilePath, currentClass),
243988
244015
  resolvedIsDynamic,
@@ -244520,7 +244547,7 @@ var HttpRoutingNoResponseStructException = class extends HttpRoutingRuntimeExcep
244520
244547
 
244521
244548
  // node_modules/@valkyrjaio/valkyrja/src/Valkyrja/Http/Routing/Data/Route.ts
244522
244549
  var Route2 = class {
244523
- constructor(path4, name, handler, requestMethods = ["HEAD" /* HEAD */, "GET" /* GET */], routeMatchedMiddleware = [], routeDispatchedMiddleware = [], throwableCaughtMiddleware = [], sendingResponseMiddleware = [], terminatedMiddleware = [], requestStruct = null, responseStruct = null) {
244550
+ constructor(path4, name, handler, requestMethods = ["HEAD" /* HEAD */, "GET" /* GET */], routeMatchedMiddleware = [], routeDispatchedMiddleware = [], throwableCaughtMiddleware = [], sendingResponseMiddleware = [], responseSentMiddleware = [], requestStruct = null, responseStruct = null) {
244524
244551
  this.path = path4;
244525
244552
  this.name = name;
244526
244553
  this.requestMethods = requestMethods;
@@ -244528,7 +244555,7 @@ var Route2 = class {
244528
244555
  this.routeDispatchedMiddleware = routeDispatchedMiddleware;
244529
244556
  this.throwableCaughtMiddleware = throwableCaughtMiddleware;
244530
244557
  this.sendingResponseMiddleware = sendingResponseMiddleware;
244531
- this.terminatedMiddleware = terminatedMiddleware;
244558
+ this.responseSentMiddleware = responseSentMiddleware;
244532
244559
  this.requestStruct = requestStruct;
244533
244560
  this.responseStruct = responseStruct;
244534
244561
  this.handler = handler;
@@ -244540,7 +244567,7 @@ var Route2 = class {
244540
244567
  routeDispatchedMiddleware;
244541
244568
  throwableCaughtMiddleware;
244542
244569
  sendingResponseMiddleware;
244543
- terminatedMiddleware;
244570
+ responseSentMiddleware;
244544
244571
  requestStruct;
244545
244572
  responseStruct;
244546
244573
  handler;
@@ -244652,17 +244679,17 @@ var Route2 = class {
244652
244679
  clone.sendingResponseMiddleware = [...this.sendingResponseMiddleware, ...middleware];
244653
244680
  return clone;
244654
244681
  }
244655
- getTerminatedMiddleware() {
244656
- return this.terminatedMiddleware;
244682
+ getResponseSentMiddleware() {
244683
+ return this.responseSentMiddleware;
244657
244684
  }
244658
- withTerminatedMiddleware(...middleware) {
244685
+ withResponseSentMiddleware(...middleware) {
244659
244686
  const clone = ObjectFactory.clone(this);
244660
- clone.terminatedMiddleware = middleware;
244687
+ clone.responseSentMiddleware = middleware;
244661
244688
  return clone;
244662
244689
  }
244663
- withAddedTerminatedMiddleware(...middleware) {
244690
+ withAddedResponseSentMiddleware(...middleware) {
244664
244691
  const clone = ObjectFactory.clone(this);
244665
- clone.terminatedMiddleware = [...this.terminatedMiddleware, ...middleware];
244692
+ clone.responseSentMiddleware = [...this.responseSentMiddleware, ...middleware];
244666
244693
  return clone;
244667
244694
  }
244668
244695
  hasRequestStruct() {
@@ -244701,7 +244728,7 @@ var Route2 = class {
244701
244728
 
244702
244729
  // node_modules/@valkyrjaio/valkyrja/src/Valkyrja/Http/Routing/Data/DynamicRoute.ts
244703
244730
  var DynamicRoute = class extends Route2 {
244704
- constructor(path4, name, regex, parameters, handler, requestMethods = ["HEAD" /* HEAD */, "GET" /* GET */], routeMatchedMiddleware = [], routeDispatchedMiddleware = [], throwableCaughtMiddleware = [], sendingResponseMiddleware = [], terminatedMiddleware = [], requestStruct = null, responseStruct = null) {
244731
+ constructor(path4, name, regex, parameters, handler, requestMethods = ["HEAD" /* HEAD */, "GET" /* GET */], routeMatchedMiddleware = [], routeDispatchedMiddleware = [], throwableCaughtMiddleware = [], sendingResponseMiddleware = [], responseSentMiddleware = [], requestStruct = null, responseStruct = null) {
244705
244732
  super(
244706
244733
  path4,
244707
244734
  name,
@@ -244711,7 +244738,7 @@ var DynamicRoute = class extends Route2 {
244711
244738
  routeDispatchedMiddleware,
244712
244739
  throwableCaughtMiddleware,
244713
244740
  sendingResponseMiddleware,
244714
- terminatedMiddleware,
244741
+ responseSentMiddleware,
244715
244742
  requestStruct,
244716
244743
  responseStruct
244717
244744
  );
@@ -245165,36 +245192,14 @@ var fs3 = __toESM(require("fs"), 1);
245165
245192
  var path3 = __toESM(require("path"), 1);
245166
245193
 
245167
245194
  // node_modules/@valkyrjaio/valkyrja/src/Valkyrja/Cli/Interaction/Enum/BackgroundColor.ts
245168
- var BackgroundColor = /* @__PURE__ */ ((BackgroundColor2) => {
245169
- BackgroundColor2[BackgroundColor2["BLACK"] = 40] = "BLACK";
245170
- BackgroundColor2[BackgroundColor2["RED"] = 41] = "RED";
245171
- BackgroundColor2[BackgroundColor2["GREEN"] = 42] = "GREEN";
245172
- BackgroundColor2[BackgroundColor2["YELLOW"] = 43] = "YELLOW";
245173
- BackgroundColor2[BackgroundColor2["BLUE"] = 44] = "BLUE";
245174
- BackgroundColor2[BackgroundColor2["MAGENTA"] = 45] = "MAGENTA";
245175
- BackgroundColor2[BackgroundColor2["CYAN"] = 46] = "CYAN";
245176
- BackgroundColor2[BackgroundColor2["WHITE"] = 47] = "WHITE";
245177
- BackgroundColor2[BackgroundColor2["DARK_GRAY"] = 100] = "DARK_GRAY";
245178
- BackgroundColor2[BackgroundColor2["LIGHT_RED"] = 101] = "LIGHT_RED";
245179
- BackgroundColor2[BackgroundColor2["LIGHT_GREEN"] = 102] = "LIGHT_GREEN";
245180
- BackgroundColor2[BackgroundColor2["LIGHT_YELLOW"] = 103] = "LIGHT_YELLOW";
245181
- BackgroundColor2[BackgroundColor2["LIGHT_BLUE"] = 104] = "LIGHT_BLUE";
245182
- BackgroundColor2[BackgroundColor2["LIGHT_MAGENTA"] = 105] = "LIGHT_MAGENTA";
245183
- BackgroundColor2[BackgroundColor2["LIGHT_CYAN"] = 106] = "LIGHT_CYAN";
245184
- BackgroundColor2[BackgroundColor2["LIGHT_WHITE"] = 107] = "LIGHT_WHITE";
245185
- return BackgroundColor2;
245186
- })(BackgroundColor || {});
245187
- ((BackgroundColor2) => {
245188
- function getDefault() {
245189
- return 49;
245190
- }
245191
- BackgroundColor2.getDefault = getDefault;
245192
- })(BackgroundColor || (BackgroundColor = {}));
245195
+ function backgroundColorDefault() {
245196
+ return 49;
245197
+ }
245193
245198
 
245194
245199
  // node_modules/@valkyrjaio/valkyrja/src/Valkyrja/Cli/Interaction/Format/BackgroundColorFormat.ts
245195
245200
  var BackgroundColorFormat = class extends Format {
245196
245201
  constructor(backgroundColor) {
245197
- super(String(backgroundColor), String(BackgroundColor.getDefault()));
245202
+ super(String(backgroundColor), String(backgroundColorDefault()));
245198
245203
  }
245199
245204
  };
245200
245205
 
@@ -245221,8 +245226,8 @@ var WarningFormatter = class extends Formatter {
245221
245226
 
245222
245227
  // node_modules/@valkyrjaio/valkyrja/src/Valkyrja/Application/Constant/ApplicationInfo.ts
245223
245228
  var ApplicationInfo = class {
245224
- static VERSION = "26.1.0";
245225
- static VERSION_BUILD_DATE_TIME = "June 17 2026 19:35:02 MST";
245229
+ static VERSION = "26.2.0";
245230
+ static VERSION_BUILD_DATE_TIME = "July 24 2026 23:49:19 MST";
245226
245231
  static ASCII = `
245227
245232
  _ _ _
245228
245233
  /\\ /\\__ _| | | ___ _ _ __(_) __ _
@@ -245331,8 +245336,8 @@ var Header = class extends Message {
245331
245336
 
245332
245337
  // src/Sindri/Constant/SindriInfo.ts
245333
245338
  var SindriInfo = class {
245334
- static VERSION = "26.1.3";
245335
- static VERSION_BUILD_DATE_TIME = "June 21 2026 11:20:36 MST";
245339
+ static VERSION = "26.2.0";
245340
+ static VERSION_BUILD_DATE_TIME = "July 25 2026 00:19:15 MST";
245336
245341
  static ICON = ` \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588
245337
245342
  \u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588
245338
245343
  \u2588\u2588\u2588\u2588
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@valkyrjaio/sindri",
3
- "version": "26.1.3",
3
+ "version": "26.2.0",
4
4
  "description": "The Valkyrja Sindri build tool.",
5
5
  "homepage": "https://www.valkyrja.io/sindri",
6
6
  "keywords": [
@@ -38,7 +38,7 @@
38
38
  "node": ">=22"
39
39
  },
40
40
  "dependencies": {
41
- "@valkyrjaio/valkyrja": "^26.1.0",
41
+ "@valkyrjaio/valkyrja": "^26.2.0",
42
42
  "ts-morph": "^28.0.0"
43
43
  },
44
44
  "scripts": {
@@ -73,7 +73,7 @@ export class CliRouteAttributeReader extends RouteAttributeReader implements Cli
73
73
  }
74
74
 
75
75
  const updatedName = this.updateName(name, method, useMap, currentFilePath, currentClass);
76
- const [routeMatchedMiddleware, routeDispatchedMiddleware, throwableCaughtMiddleware, exitedMiddleware] =
76
+ const [routeMatchedMiddleware, routeDispatchedMiddleware, throwableCaughtMiddleware, processExitingMiddleware] =
77
77
  this.updateMiddleware(
78
78
  method,
79
79
  useMap,
@@ -93,7 +93,7 @@ export class CliRouteAttributeReader extends RouteAttributeReader implements Cli
93
93
  routeMatchedMiddleware,
94
94
  routeDispatchedMiddleware,
95
95
  throwableCaughtMiddleware,
96
- exitedMiddleware,
96
+ processExitingMiddleware,
97
97
  this.parameterReader.updateArguments(method, useMap, currentFilePath, currentClass),
98
98
  this.parameterReader.updateOptions(method, useMap, currentFilePath, currentClass),
99
99
  );
@@ -130,7 +130,7 @@ export class CliRouteAttributeReader extends RouteAttributeReader implements Cli
130
130
  routeMatchedMiddleware: string[],
131
131
  routeDispatchedMiddleware: string[],
132
132
  throwableCaughtMiddleware: string[],
133
- exitedMiddleware: string[],
133
+ processExitingMiddleware: string[],
134
134
  ): [string[], string[], string[], string[]] {
135
135
  for (const decorator of this.findDecoratorsOnNode(method, 'Middleware', useMap, currentFilePath)) {
136
136
  const mwName = this.extractExprValue(
@@ -144,7 +144,7 @@ export class CliRouteAttributeReader extends RouteAttributeReader implements Cli
144
144
  continue;
145
145
  }
146
146
 
147
- [routeMatchedMiddleware, routeDispatchedMiddleware, throwableCaughtMiddleware, exitedMiddleware] =
147
+ [routeMatchedMiddleware, routeDispatchedMiddleware, throwableCaughtMiddleware, processExitingMiddleware] =
148
148
  this.classifyMiddleware(
149
149
  mwName,
150
150
  useMap,
@@ -152,11 +152,11 @@ export class CliRouteAttributeReader extends RouteAttributeReader implements Cli
152
152
  routeMatchedMiddleware,
153
153
  routeDispatchedMiddleware,
154
154
  throwableCaughtMiddleware,
155
- exitedMiddleware,
155
+ processExitingMiddleware,
156
156
  );
157
157
  }
158
158
 
159
- return [routeMatchedMiddleware, routeDispatchedMiddleware, throwableCaughtMiddleware, exitedMiddleware];
159
+ return [routeMatchedMiddleware, routeDispatchedMiddleware, throwableCaughtMiddleware, processExitingMiddleware];
160
160
  }
161
161
 
162
162
  protected classifyMiddleware(
@@ -166,7 +166,7 @@ export class CliRouteAttributeReader extends RouteAttributeReader implements Cli
166
166
  routeMatchedMiddleware: string[],
167
167
  routeDispatchedMiddleware: string[],
168
168
  throwableCaughtMiddleware: string[],
169
- exitedMiddleware: string[],
169
+ processExitingMiddleware: string[],
170
170
  ): [string[], string[], string[], string[]] {
171
171
  if (this.classImplementsInterface(mwName, 'RouteMatchedMiddlewareContract', useMap, currentFilePath)) {
172
172
  routeMatchedMiddleware = [...routeMatchedMiddleware, mwName];
@@ -180,11 +180,11 @@ export class CliRouteAttributeReader extends RouteAttributeReader implements Cli
180
180
  throwableCaughtMiddleware = [...throwableCaughtMiddleware, mwName];
181
181
  }
182
182
 
183
- if (this.classImplementsInterface(mwName, 'ExitedMiddlewareContract', useMap, currentFilePath)) {
184
- exitedMiddleware = [...exitedMiddleware, mwName];
183
+ if (this.classImplementsInterface(mwName, 'ProcessExitingMiddlewareContract', useMap, currentFilePath)) {
184
+ processExitingMiddleware = [...processExitingMiddleware, mwName];
185
185
  }
186
186
 
187
- return [routeMatchedMiddleware, routeDispatchedMiddleware, throwableCaughtMiddleware, exitedMiddleware];
187
+ return [routeMatchedMiddleware, routeDispatchedMiddleware, throwableCaughtMiddleware, processExitingMiddleware];
188
188
  }
189
189
 
190
190
  protected buildRouteExpr(data: CliRouteData): ts.Expression {
@@ -213,7 +213,7 @@ export class CliRouteAttributeReader extends RouteAttributeReader implements Cli
213
213
  this.buildClassArrayExpr(data.routeMatchedMiddleware),
214
214
  this.buildClassArrayExpr(data.routeDispatchedMiddleware),
215
215
  this.buildClassArrayExpr(data.throwableCaughtMiddleware),
216
- this.buildClassArrayExpr(data.exitedMiddleware),
216
+ this.buildClassArrayExpr(data.processExitingMiddleware),
217
217
  ];
218
218
  }
219
219
  }
@@ -38,7 +38,7 @@ export interface HttpRouteMiddlewareReaderContract {
38
38
  routeDispatchedMiddleware: string[],
39
39
  throwableCaughtMiddleware: string[],
40
40
  sendingResponseMiddleware: string[],
41
- terminatedMiddleware: string[],
41
+ responseSentMiddleware: string[],
42
42
  ): [string[], string[], string[], string[], string[]];
43
43
 
44
44
  updateRequestStruct(
@@ -23,7 +23,7 @@ export class CliRouteData implements CliRouteDataContract {
23
23
  readonly routeMatchedMiddleware: readonly string[] = [],
24
24
  readonly routeDispatchedMiddleware: readonly string[] = [],
25
25
  readonly throwableCaughtMiddleware: readonly string[] = [],
26
- readonly exitedMiddleware: readonly string[] = [],
26
+ readonly processExitingMiddleware: readonly string[] = [],
27
27
  args: readonly CliArgumentParameterData[] = [],
28
28
  readonly options: readonly CliOptionParameterData[] = [],
29
29
  ) {
@@ -19,7 +19,7 @@ export interface CliRouteDataContract {
19
19
  readonly routeMatchedMiddleware: readonly string[];
20
20
  readonly routeDispatchedMiddleware: readonly string[];
21
21
  readonly throwableCaughtMiddleware: readonly string[];
22
- readonly exitedMiddleware: readonly string[];
22
+ readonly processExitingMiddleware: readonly string[];
23
23
  readonly arguments: readonly CliArgumentParameterDataContract[];
24
24
  readonly options: readonly CliOptionParameterDataContract[];
25
25
  }
@@ -20,7 +20,7 @@ export interface HttpRouteDataContract {
20
20
  readonly routeDispatchedMiddleware: readonly string[];
21
21
  readonly throwableCaughtMiddleware: readonly string[];
22
22
  readonly sendingResponseMiddleware: readonly string[];
23
- readonly terminatedMiddleware: readonly string[];
23
+ readonly responseSentMiddleware: readonly string[];
24
24
  readonly requestStruct: string | null;
25
25
  readonly responseStruct: string | null;
26
26
  readonly isDynamic: boolean;
@@ -21,7 +21,7 @@ export class HttpRouteData implements HttpRouteDataContract {
21
21
  readonly routeDispatchedMiddleware: readonly string[] = [],
22
22
  readonly throwableCaughtMiddleware: readonly string[] = [],
23
23
  readonly sendingResponseMiddleware: readonly string[] = [],
24
- readonly terminatedMiddleware: readonly string[] = [],
24
+ readonly responseSentMiddleware: readonly string[] = [],
25
25
  readonly requestStruct: string | null = null,
26
26
  readonly responseStruct: string | null = null,
27
27
  readonly isDynamic: boolean = false,
@@ -188,7 +188,7 @@ export class HttpRouteAttributeReader extends RouteAttributeReader implements Ht
188
188
  routeDispatchedMiddleware,
189
189
  throwableCaughtMiddleware,
190
190
  sendingResponseMiddleware,
191
- terminatedMiddleware,
191
+ responseSentMiddleware,
192
192
  ] = this.middlewareReader.updateMiddleware(
193
193
  method,
194
194
  useMap,
@@ -210,7 +210,7 @@ export class HttpRouteAttributeReader extends RouteAttributeReader implements Ht
210
210
  routeDispatchedMiddleware,
211
211
  throwableCaughtMiddleware,
212
212
  sendingResponseMiddleware,
213
- terminatedMiddleware,
213
+ responseSentMiddleware,
214
214
  this.middlewareReader.updateRequestStruct(method, useMap, currentFilePath, currentClass),
215
215
  this.middlewareReader.updateResponseStruct(method, useMap, currentFilePath, currentClass),
216
216
  resolvedIsDynamic,
@@ -75,7 +75,7 @@ export class HttpRouteMiddlewareReader extends AstReader implements HttpRouteMid
75
75
  routeDispatchedMiddleware: string[],
76
76
  throwableCaughtMiddleware: string[],
77
77
  sendingResponseMiddleware: string[],
78
- terminatedMiddleware: string[],
78
+ responseSentMiddleware: string[],
79
79
  ): [string[], string[], string[], string[], string[]] {
80
80
  for (const decorator of this.findDecoratorsOnNode(method, 'Middleware', useMap, namespace)) {
81
81
  const mwName = this.extractExprValue(this.getDecoratorArg(decorator, 0), useMap, namespace, currentClass);
@@ -89,7 +89,7 @@ export class HttpRouteMiddlewareReader extends AstReader implements HttpRouteMid
89
89
  routeDispatchedMiddleware,
90
90
  throwableCaughtMiddleware,
91
91
  sendingResponseMiddleware,
92
- terminatedMiddleware,
92
+ responseSentMiddleware,
93
93
  ] = this.classifyMiddleware(
94
94
  mwName,
95
95
  useMap,
@@ -98,7 +98,7 @@ export class HttpRouteMiddlewareReader extends AstReader implements HttpRouteMid
98
98
  routeDispatchedMiddleware,
99
99
  throwableCaughtMiddleware,
100
100
  sendingResponseMiddleware,
101
- terminatedMiddleware,
101
+ responseSentMiddleware,
102
102
  );
103
103
  }
104
104
 
@@ -107,7 +107,7 @@ export class HttpRouteMiddlewareReader extends AstReader implements HttpRouteMid
107
107
  routeDispatchedMiddleware,
108
108
  throwableCaughtMiddleware,
109
109
  sendingResponseMiddleware,
110
- terminatedMiddleware,
110
+ responseSentMiddleware,
111
111
  ];
112
112
  }
113
113
 
@@ -151,7 +151,7 @@ export class HttpRouteMiddlewareReader extends AstReader implements HttpRouteMid
151
151
  this.buildClassIdentifierArrayExpr(data.routeDispatchedMiddleware),
152
152
  this.buildClassIdentifierArrayExpr(data.throwableCaughtMiddleware),
153
153
  this.buildClassIdentifierArrayExpr(data.sendingResponseMiddleware),
154
- this.buildClassIdentifierArrayExpr(data.terminatedMiddleware),
154
+ this.buildClassIdentifierArrayExpr(data.responseSentMiddleware),
155
155
  ];
156
156
  }
157
157
 
@@ -181,7 +181,7 @@ export class HttpRouteMiddlewareReader extends AstReader implements HttpRouteMid
181
181
  routeDispatchedMiddleware: string[],
182
182
  throwableCaughtMiddleware: string[],
183
183
  sendingResponseMiddleware: string[],
184
- terminatedMiddleware: string[],
184
+ responseSentMiddleware: string[],
185
185
  ): [string[], string[], string[], string[], string[]] {
186
186
  if (this.classImplementsInterface(mwName, 'RouteMatchedMiddlewareContract', useMap, currentFilePath)) {
187
187
  routeMatchedMiddleware = [...routeMatchedMiddleware, mwName];
@@ -199,8 +199,8 @@ export class HttpRouteMiddlewareReader extends AstReader implements HttpRouteMid
199
199
  sendingResponseMiddleware = [...sendingResponseMiddleware, mwName];
200
200
  }
201
201
 
202
- if (this.classImplementsInterface(mwName, 'TerminatedMiddlewareContract', useMap, currentFilePath)) {
203
- terminatedMiddleware = [...terminatedMiddleware, mwName];
202
+ if (this.classImplementsInterface(mwName, 'ResponseSentMiddlewareContract', useMap, currentFilePath)) {
203
+ responseSentMiddleware = [...responseSentMiddleware, mwName];
204
204
  }
205
205
 
206
206
  return [
@@ -208,7 +208,7 @@ export class HttpRouteMiddlewareReader extends AstReader implements HttpRouteMid
208
208
  routeDispatchedMiddleware,
209
209
  throwableCaughtMiddleware,
210
210
  sendingResponseMiddleware,
211
- terminatedMiddleware,
211
+ responseSentMiddleware,
212
212
  ];
213
213
  }
214
214
  }
@@ -8,8 +8,8 @@
8
8
  */
9
9
 
10
10
  export class SindriInfo {
11
- static readonly VERSION = '26.1.3' as const;
12
- static readonly VERSION_BUILD_DATE_TIME = 'June 21 2026 11:20:36 MST' as const;
11
+ static readonly VERSION = '26.2.0' as const;
12
+ static readonly VERSION_BUILD_DATE_TIME = 'July 25 2026 00:19:15 MST' as const;
13
13
  static readonly ICON = `\
14
14
  ██████████
15
15
  ████ ████