index.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. var __defProp = Object.defineProperty;
  2. var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  3. var __getOwnPropNames = Object.getOwnPropertyNames;
  4. var __hasOwnProp = Object.prototype.hasOwnProperty;
  5. var __export = (target, all) => {
  6. for (var name in all)
  7. __defProp(target, name, { get: all[name], enumerable: true });
  8. };
  9. var __copyProps = (to, from, except2, desc) => {
  10. if (from && typeof from === "object" || typeof from === "function") {
  11. for (let key of __getOwnPropNames(from))
  12. if (!__hasOwnProp.call(to, key) && key !== except2)
  13. __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  14. }
  15. return to;
  16. };
  17. var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
  18. var combine_exports = {};
  19. __export(combine_exports, {
  20. every: () => every,
  21. except: () => except,
  22. some: () => some
  23. });
  24. module.exports = __toCommonJS(combine_exports);
  25. var import_compose = require("../../compose");
  26. var import_router = require("../../router");
  27. var import_trie_router = require("../../router/trie-router");
  28. const some = (...middleware) => {
  29. return async function some2(c, next) {
  30. let isNextCalled = false;
  31. const wrappedNext = () => {
  32. isNextCalled = true;
  33. return next();
  34. };
  35. let lastError;
  36. for (const handler of middleware) {
  37. try {
  38. const result = await handler(c, wrappedNext);
  39. if (result === true && !c.finalized) {
  40. await wrappedNext();
  41. } else if (result === false) {
  42. lastError = new Error("No successful middleware found");
  43. continue;
  44. }
  45. lastError = void 0;
  46. break;
  47. } catch (error) {
  48. lastError = error;
  49. if (isNextCalled) {
  50. break;
  51. }
  52. }
  53. }
  54. if (lastError) {
  55. throw lastError;
  56. }
  57. };
  58. };
  59. const every = (...middleware) => {
  60. return async function every2(c, next) {
  61. const currentRouteIndex = c.req.routeIndex;
  62. await (0, import_compose.compose)(
  63. middleware.map((m) => [
  64. [
  65. async (c2, next2) => {
  66. c2.req.routeIndex = currentRouteIndex;
  67. const res = await m(c2, next2);
  68. if (res === false) {
  69. throw new Error("Unmet condition");
  70. }
  71. return res;
  72. }
  73. ]
  74. ])
  75. )(c, next);
  76. };
  77. };
  78. const except = (condition, ...middleware) => {
  79. let router = void 0;
  80. const conditions = (Array.isArray(condition) ? condition : [condition]).map((condition2) => {
  81. if (typeof condition2 === "string") {
  82. router ||= new import_trie_router.TrieRouter();
  83. router.add(import_router.METHOD_NAME_ALL, condition2, true);
  84. } else {
  85. return condition2;
  86. }
  87. }).filter(Boolean);
  88. if (router) {
  89. conditions.unshift((c) => !!router?.match(import_router.METHOD_NAME_ALL, c.req.path)?.[0]?.[0]?.[0]);
  90. }
  91. const handler = some((c) => conditions.some((cond) => cond(c)), every(...middleware));
  92. return async function except2(c, next) {
  93. await handler(c, next);
  94. };
  95. };
  96. // Annotate the CommonJS export names for ESM import in node:
  97. 0 && (module.exports = {
  98. every,
  99. except,
  100. some
  101. });