#!/usr/bin/env node
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
// node_modules/@emprespresso/pengueno/dist/leftpadesque/prepend.js
var require_prepend = __commonJS({
"node_modules/@emprespresso/pengueno/dist/leftpadesque/prepend.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.prependWith = void 0;
var prependWith = (arr, prep) => Array(arr.length * 2).fill(0).map((_, i) => i % 2 === 0).map((isPrep, i) => isPrep ? prep : arr[Math.floor(i / 2)]);
exports2.prependWith = prependWith;
}
});
// node_modules/@emprespresso/pengueno/dist/leftpadesque/debug.js
var require_debug = __commonJS({
"node_modules/@emprespresso/pengueno/dist/leftpadesque/debug.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.isDebug = exports2.isProd = void 0;
var _hasEnv = true;
var _env = _hasEnv && (process.env.ENVIRONMENT ?? "").toLowerCase().includes("prod") ? "production" : "development";
var isProd = () => _env === "production";
exports2.isProd = isProd;
var _debug = !(0, exports2.isProd)() || _hasEnv && ["y", "t"].some((process.env.DEBUG ?? "").toLowerCase().startsWith);
var isDebug = () => _debug;
exports2.isDebug = isDebug;
}
});
// node_modules/@emprespresso/pengueno/dist/leftpadesque/memoize.js
var require_memoize = __commonJS({
"node_modules/@emprespresso/pengueno/dist/leftpadesque/memoize.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.memoize = void 0;
var memoize = (fn) => {
const cache = /* @__PURE__ */ new Map();
return (...args) => {
const key = JSON.stringify(args);
if (cache.has(key)) {
return cache.get(key);
}
const res = fn(...args);
cache.set(key, res);
return res;
};
};
exports2.memoize = memoize;
}
});
// node_modules/@emprespresso/pengueno/dist/leftpadesque/index.js
var require_leftpadesque = __commonJS({
"node_modules/@emprespresso/pengueno/dist/leftpadesque/index.js"(exports2) {
"use strict";
var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
o[k2] = m[k];
});
var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
};
Object.defineProperty(exports2, "__esModule", { value: true });
__exportStar(require_prepend(), exports2);
__exportStar(require_debug(), exports2);
__exportStar(require_memoize(), exports2);
}
});
// node_modules/@emprespresso/pengueno/dist/types/misc.js
var require_misc = __commonJS({
"node_modules/@emprespresso/pengueno/dist/types/misc.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
}
});
// node_modules/@emprespresso/pengueno/dist/types/object.js
var require_object = __commonJS({
"node_modules/@emprespresso/pengueno/dist/types/object.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.isObject = void 0;
var isObject3 = (o) => typeof o === "object" && !Array.isArray(o) && !!o;
exports2.isObject = isObject3;
}
});
// node_modules/@emprespresso/pengueno/dist/types/tagged.js
var require_tagged = __commonJS({
"node_modules/@emprespresso/pengueno/dist/types/tagged.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.isTagged = void 0;
var index_1 = require_types();
var isTagged = (o, tag) => !!((0, index_1.isObject)(o) && "_tag" in o && o._tag === tag);
exports2.isTagged = isTagged;
}
});
// node_modules/@emprespresso/pengueno/dist/types/fn/callable.js
var require_callable = __commonJS({
"node_modules/@emprespresso/pengueno/dist/types/fn/callable.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
}
});
// node_modules/@emprespresso/pengueno/dist/types/fn/optional.js
var require_optional = __commonJS({
"node_modules/@emprespresso/pengueno/dist/types/fn/optional.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.Optional = exports2.IOptionalEmptyError = exports2.isOptional = exports2.IOptionalTag = void 0;
var pengueno_1 = require_dist2();
exports2.IOptionalTag = "IOptional";
var isOptional = (o) => (0, pengueno_1.isTagged)(o, exports2.IOptionalTag);
exports2.isOptional = isOptional;
var IOptionalEmptyError = class extends Error {
};
exports2.IOptionalEmptyError = IOptionalEmptyError;
var OSomeTag = "O.Some";
var ONoneTag = "O.None";
var isNone = (o) => (0, pengueno_1.isTagged)(o, ONoneTag);
var isSome = (o) => (0, pengueno_1.isTagged)(o, OSomeTag);
var _Tagged = class {
_tag;
constructor(_tag = exports2.IOptionalTag) {
this._tag = _tag;
}
};
var Optional = class _Optional extends _Tagged {
self;
constructor(self) {
super();
this.self = self;
}
move(t) {
return this.map(() => t);
}
orSome(supplier) {
if (isNone(this.self))
return _Optional.from(supplier());
return this;
}
get() {
if (isNone(this.self))
throw new IOptionalEmptyError("called get() on None optional");
return this.self.value;
}
filter(mapper) {
if (isNone(this.self) || !mapper(this.self.value))
return _Optional.none();
return _Optional.some(this.self.value);
}
map(mapper) {
if (isNone(this.self))
return _Optional.none();
return _Optional.from(mapper(this.self.value));
}
flatMap(mapper) {
if (isNone(this.self))
return _Optional.none();
return _Optional.from(mapper(this.self.value)).orSome(() => _Optional.none()).get();
}
present() {
return isSome(this.self);
}
*[Symbol.iterator]() {
if (isSome(this.self))
yield this.self.value;
}
static some(value) {
return new _Optional({ value, _tag: OSomeTag });
}
static _none = new _Optional({ _tag: ONoneTag });
static none() {
return this._none;
}
static from(value) {
if (value === null || value === void 0)
return _Optional.none();
return _Optional.some(value);
}
};
exports2.Optional = Optional;
}
});
// node_modules/@emprespresso/pengueno/dist/types/fn/either.js
var require_either = __commonJS({
"node_modules/@emprespresso/pengueno/dist/types/fn/either.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.Either = exports2.isRight = exports2.isLeft = exports2.isEither = exports2.IEitherTag = void 0;
var pengueno_1 = require_dist2();
exports2.IEitherTag = "IEither";
var isEither = (o) => (0, pengueno_1.isTagged)(o, exports2.IEitherTag);
exports2.isEither = isEither;
var ELeftTag = "E.Left";
var isLeft = (o) => (0, pengueno_1.isTagged)(o, ELeftTag);
exports2.isLeft = isLeft;
var ERightTag = "E.Right";
var isRight = (o) => (0, pengueno_1.isTagged)(o, ERightTag);
exports2.isRight = isRight;
var _Tagged = class {
_tag;
constructor(_tag = exports2.IEitherTag) {
this._tag = _tag;
}
};
var Either2 = class _Either extends _Tagged {
self;
constructor(self) {
super();
this.self = self;
}
moveRight(t) {
return this.mapRight(() => t);
}
mapBoth(errBranch, okBranch) {
if ((0, exports2.isLeft)(this.self))
return _Either.left(errBranch(this.self.err));
return _Either.right(okBranch(this.self.ok));
}
mapRight(mapper) {
if ((0, exports2.isRight)(this.self))
return _Either.right(mapper(this.self.ok));
return _Either.left(this.self.err);
}
mapLeft(mapper) {
if ((0, exports2.isLeft)(this.self))
return _Either.left(mapper(this.self.err));
return _Either.right(this.self.ok);
}
flatMap(mapper) {
if ((0, exports2.isRight)(this.self))
return mapper(this.self.ok);
return _Either.left(this.self.err);
}
filter(mapper) {
if ((0, exports2.isLeft)(this.self))
return _Either.left(this.self.err);
return _Either.fromFailable(() => this.right().filter(mapper).get());
}
async flatMapAsync(mapper) {
if ((0, exports2.isLeft)(this.self))
return Promise.resolve(_Either.left(this.self.err));
return await mapper(this.self.ok).catch((err) => _Either.left(err));
}
fold(leftFolder, rightFolder) {
if ((0, exports2.isLeft)(this.self))
return leftFolder(this.self.err);
return rightFolder(this.self.ok);
}
left() {
if ((0, exports2.isLeft)(this.self))
return pengueno_1.Optional.from(this.self.err);
return pengueno_1.Optional.none();
}
right() {
if ((0, exports2.isRight)(this.self))
return pengueno_1.Optional.from(this.self.ok);
return pengueno_1.Optional.none();
}
joinRight(other, mapper) {
return this.flatMap((t) => other.mapRight((o) => mapper(o, t)));
}
joinRightAsync(other, mapper) {
return this.flatMapAsync(async (t) => {
const o = typeof other === "function" ? other() : other;
return await o.then((other2) => other2.mapRight((o2) => mapper(o2, t)));
});
}
swap() {
if ((0, exports2.isRight)(this.self))
return _Either.left(this.self.ok);
return _Either.right(this.self.err);
}
static left(e) {
return new _Either({ err: e, _tag: ELeftTag });
}
static right(t) {
return new _Either({ ok: t, _tag: ERightTag });
}
static fromFailable(s) {
try {
return _Either.right(s());
} catch (e) {
return _Either.left(e);
}
}
static async fromFailableAsync(s) {
return await (typeof s === "function" ? s() : s).then((t) => _Either.right(t)).catch((e) => _Either.left(e));
}
static async retrying(s, attempts = 3, interval = (attempt) => _Either.attemptWait(attempt)) {
let result = _Either.right(new Error("No attempts made"));
for (let attempt = 0; attempt < attempts && result.right().present(); attempt++) {
await interval(attempt);
const currentAttempt = await s().then((s2) => s2.swap());
result = await result.joinRightAsync(() => Promise.resolve(currentAttempt), (res, _prevError) => res);
}
return result.swap();
}
static attemptWait(attempt, backoffFactor = 500, jitter = 300, exponent = 1.3) {
if (attempt === 0) {
return Promise.resolve();
}
const wait = Math.pow(exponent, attempt) * backoffFactor + jitter * Math.random() * Math.pow(exponent, attempt);
return new Promise((res) => setTimeout(res, wait));
}
};
exports2.Either = Either2;
}
});
// node_modules/@emprespresso/pengueno/dist/types/fn/index.js
var require_fn = __commonJS({
"node_modules/@emprespresso/pengueno/dist/types/fn/index.js"(exports2) {
"use strict";
var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
o[k2] = m[k];
});
var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
};
Object.defineProperty(exports2, "__esModule", { value: true });
__exportStar(require_callable(), exports2);
__exportStar(require_optional(), exports2);
__exportStar(require_either(), exports2);
}
});
// node_modules/@emprespresso/pengueno/dist/types/collections/cons.js
var require_cons = __commonJS({
"node_modules/@emprespresso/pengueno/dist/types/collections/cons.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.ListZipper = exports2.Cons = void 0;
var pengueno_1 = require_dist2();
var Cons = class _Cons {
value;
next;
constructor(value, next = pengueno_1.Optional.none()) {
this.value = value;
this.next = next;
}
before(head) {
return new _Cons(this.value, head);
}
replace(_value) {
return new _Cons(_value, this.next);
}
*[Symbol.iterator]() {
for (let cur = pengueno_1.Optional.some(this); cur.present(); cur = cur.flatMap((cur2) => cur2.next)) {
yield cur.get().value;
}
}
static addOnto(items, tail) {
return Array.from(items).reverse().reduce((cons, value) => pengueno_1.Optional.from(new _Cons(value, cons)), tail);
}
static from(items) {
return _Cons.addOnto(items, pengueno_1.Optional.none());
}
};
exports2.Cons = Cons;
var ListZipper = class _ListZipper {
reversedPathToHead;
currentHead;
constructor(reversedPathToHead, currentHead) {
this.reversedPathToHead = reversedPathToHead;
this.currentHead = currentHead;
}
read() {
return this.currentHead.map(({ value }) => value);
}
next() {
return this.currentHead.map((head) => new _ListZipper(pengueno_1.Optional.some(head.before(this.reversedPathToHead)), head.next));
}
previous() {
return this.reversedPathToHead.map((lastVisited) => new _ListZipper(lastVisited.next, pengueno_1.Optional.some(lastVisited.before(this.currentHead))));
}
prependChunk(values) {
return new _ListZipper(Cons.addOnto(Array.from(values).reverse(), this.reversedPathToHead), this.currentHead);
}
prepend(value) {
return this.prependChunk([value]);
}
remove() {
const newHead = this.currentHead.flatMap((right) => right.next);
return new _ListZipper(this.reversedPathToHead, newHead);
}
replace(value) {
const newHead = this.currentHead.map((right) => right.replace(value));
return new _ListZipper(this.reversedPathToHead, newHead);
}
*[Symbol.iterator]() {
let head = this;
for (let prev = head.previous(); prev.present(); prev = prev.flatMap((p) => p.previous())) {
head = prev.get();
}
if (head.currentHead.present())
yield* head.currentHead.get();
}
collection() {
return Array.from(this);
}
static from(iterable) {
return new _ListZipper(pengueno_1.Optional.none(), Cons.from(iterable));
}
};
exports2.ListZipper = ListZipper;
}
});
// node_modules/@emprespresso/pengueno/dist/types/collections/jsonds.js
var require_jsonds = __commonJS({
"node_modules/@emprespresso/pengueno/dist/types/collections/jsonds.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.JSONHashMap = exports2.JSONSet = void 0;
var JSONSet = class {
items;
constructor(items = /* @__PURE__ */ new Set()) {
this.items = items;
}
add(item) {
const itemJson = JSON.stringify(item, Object.keys(item).sort());
this.items.add(itemJson);
}
has(item) {
const itemJson = JSON.stringify(item, Object.keys(item).sort());
return this.items.has(itemJson);
}
delete(item) {
const itemJson = JSON.stringify(item, Object.keys(item).sort());
return this.items.delete(itemJson);
}
clear() {
this.items.clear();
}
size() {
return this.items.size;
}
};
exports2.JSONSet = JSONSet;
var JSONHashMap = class {
map;
constructor(map = /* @__PURE__ */ new Map()) {
this.map = map;
}
set(key, value) {
const keyJson = JSON.stringify(key, Object.keys(key).sort());
this.map.set(keyJson, value);
}
get(key) {
const keyJson = JSON.stringify(key, Object.keys(key).sort());
return this.map.get(keyJson);
}
has(key) {
const keyJson = JSON.stringify(key, Object.keys(key).sort());
return this.map.has(keyJson);
}
keys() {
return Array.from(this.map.keys()).map((x) => JSON.parse(x));
}
delete(key) {
const keyJson = JSON.stringify(key, Object.keys(key).sort());
return this.map.delete(keyJson);
}
clear() {
this.map.clear();
}
size() {
return this.map.size;
}
};
exports2.JSONHashMap = JSONHashMap;
}
});
// node_modules/@emprespresso/pengueno/dist/types/collections/index.js
var require_collections = __commonJS({
"node_modules/@emprespresso/pengueno/dist/types/collections/index.js"(exports2) {
"use strict";
var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
o[k2] = m[k];
});
var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
};
Object.defineProperty(exports2, "__esModule", { value: true });
__exportStar(require_cons(), exports2);
__exportStar(require_jsonds(), exports2);
}
});
// node_modules/@emprespresso/pengueno/dist/types/index.js
var require_types = __commonJS({
"node_modules/@emprespresso/pengueno/dist/types/index.js"(exports2) {
"use strict";
var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
o[k2] = m[k];
});
var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
};
Object.defineProperty(exports2, "__esModule", { value: true });
__exportStar(require_misc(), exports2);
__exportStar(require_object(), exports2);
__exportStar(require_tagged(), exports2);
__exportStar(require_fn(), exports2);
__exportStar(require_collections(), exports2);
}
});
// node_modules/@emprespresso/pengueno/dist/trace/itrace.js
var require_itrace = __commonJS({
"node_modules/@emprespresso/pengueno/dist/trace/itrace.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.TraceableImpl = void 0;
var TraceableImpl = class _TraceableImpl {
item;
trace;
constructor(item, trace) {
this.item = item;
this.trace = trace;
}
map(mapper) {
const result = mapper(this);
return new _TraceableImpl(result, this.trace);
}
coExtend(mapper) {
const results = mapper(this);
return Array.from(results).map((result) => this.move(result));
}
flatMap(mapper) {
return mapper(this);
}
flatMapAsync(mapper) {
return new _TraceableImpl(mapper(this).then((t) => t.get()), this.trace);
}
traceScope(mapper) {
return new _TraceableImpl(this.get(), this.trace.traceScope(mapper(this)));
}
peek(peek) {
peek(this);
return this;
}
move(t) {
return this.map(() => t);
}
bimap(mapper) {
const { item, trace: _trace } = mapper(this);
return this.move(item).traceScope(() => _trace);
}
get() {
return this.item;
}
};
exports2.TraceableImpl = TraceableImpl;
}
});
// node_modules/@emprespresso/pengueno/dist/trace/metric/emittable.js
var require_emittable = __commonJS({
"node_modules/@emprespresso/pengueno/dist/trace/metric/emittable.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.EmittableMetric = void 0;
var index_1 = require_metric2();
var EmittableMetric = class {
name;
unit;
constructor(name, unit) {
this.name = name;
this.unit = unit;
}
withValue(value) {
return {
name: this.name,
unit: this.unit,
emissionTimestamp: Date.now(),
value,
_tag: index_1.MetricValueTag
};
}
};
exports2.EmittableMetric = EmittableMetric;
}
});
// node_modules/@emprespresso/pengueno/dist/trace/metric/metric.js
var require_metric = __commonJS({
"node_modules/@emprespresso/pengueno/dist/trace/metric/metric.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.ResultMetric = exports2.Metric = void 0;
var index_1 = require_metric2();
var _Tagged = class {
_tag;
constructor(_tag = index_1.IMetricTag) {
this._tag = _tag;
}
};
var Metric = class _Metric extends _Tagged {
name;
parent;
count;
time;
static DELIM = ".";
constructor(name, parent = void 0, count = new index_1.EmittableMetric(_Metric.join(name, "count"), index_1.Unit.COUNT), time = new index_1.EmittableMetric(_Metric.join(name, "time"), index_1.Unit.MILLISECONDS)) {
super();
this.name = name;
this.parent = parent;
this.count = count;
this.time = time;
}
child(_name) {
const childName = _Metric.join(this.name, _name);
return new _Metric(childName, this);
}
asResult() {
return ResultMetric.from(this);
}
static join(...name) {
return name.join(_Metric.DELIM);
}
static fromName(name) {
return new _Metric(name);
}
};
exports2.Metric = Metric;
var ResultMetric = class _ResultMetric extends Metric {
name;
parent;
failure;
success;
warn;
constructor(name, parent = void 0, failure, success, warn) {
super(name, parent);
this.name = name;
this.parent = parent;
this.failure = failure;
this.success = success;
this.warn = warn;
}
static from(metric) {
const failure = metric.child("failure");
const success = metric.child("success");
const warn = metric.child("warn");
return new _ResultMetric(metric.name, metric.parent, failure, success, warn);
}
};
exports2.ResultMetric = ResultMetric;
}
});
// node_modules/@emprespresso/pengueno/dist/trace/metric/trace.js
var require_trace = __commonJS({
"node_modules/@emprespresso/pengueno/dist/trace/metric/trace.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.MetricsTrace = exports2.isMetricsTraceSupplier = void 0;
var pengueno_1 = require_dist2();
var isMetricsTraceSupplier = (t) => (0, pengueno_1.isMetricValue)(t) || (0, pengueno_1.isIMetric)(t) || Array.isArray(t) && t.every((_m) => (0, pengueno_1.isMetricValue)(_m) || (0, pengueno_1.isIMetric)(_m));
exports2.isMetricsTraceSupplier = isMetricsTraceSupplier;
var MetricsTrace = class _MetricsTrace {
metricConsumer;
activeTraces;
completedTraces;
constructor(metricConsumer, activeTraces = /* @__PURE__ */ new Map(), completedTraces = /* @__PURE__ */ new Set()) {
this.metricConsumer = metricConsumer;
this.activeTraces = activeTraces;
this.completedTraces = completedTraces;
}
traceScope(trace) {
const now = Date.now();
const metricsToTrace = (Array.isArray(trace) ? trace : [trace]).filter(pengueno_1.isIMetric);
const initialTraces = new Map(metricsToTrace.map((metric) => [metric.name, now]));
return new _MetricsTrace(this.metricConsumer, initialTraces, this.completedTraces);
}
trace(metrics) {
if (!metrics || typeof metrics === "string") {
return this;
}
const now = Date.now();
const allMetrics = Array.isArray(metrics) ? metrics : [metrics];
const valuesToEmit = allMetrics.filter(pengueno_1.isMetricValue);
const traceableMetrics = allMetrics.filter(pengueno_1.isIMetric);
const metricsToStart = traceableMetrics.filter((m) => !this.activeTraces.has(m.name));
const metricsToEnd = traceableMetrics.filter((m) => this.activeTraces.has(m.name) && !this.completedTraces.has(m.name));
const endedMetricValues = metricsToEnd.flatMap((metric) => [
metric.count.withValue(1),
metric.time.withValue(now - this.activeTraces.get(metric.name))
]);
const parentBasedMetrics = metricsToStart.filter((metric) => {
const parent = metric.parent;
return parent && this.activeTraces.has(parent.name);
});
const parentBasedValues = parentBasedMetrics.flatMap((metric) => {
const parentStart = this.activeTraces.get(metric.parent.name);
return [metric.count.withValue(1), metric.time.withValue(now - parentStart)];
});
const allMetricsToEmit = [...valuesToEmit, ...endedMetricValues, ...parentBasedValues];
if (allMetricsToEmit.length > 0) {
this.metricConsumer(allMetricsToEmit);
}
const nextActiveTraces = new Map([
...this.activeTraces,
...metricsToStart.map((m) => [m.name, now])
]);
const nextCompletedTraces = /* @__PURE__ */ new Set([
...this.completedTraces,
...metricsToEnd.map((m) => m.name),
...parentBasedMetrics.map((m) => m.name)
]);
return new _MetricsTrace(this.metricConsumer, nextActiveTraces, nextCompletedTraces);
}
};
exports2.MetricsTrace = MetricsTrace;
}
});
// node_modules/@emprespresso/pengueno/dist/trace/metric/index.js
var require_metric2 = __commonJS({
"node_modules/@emprespresso/pengueno/dist/trace/metric/index.js"(exports2) {
"use strict";
var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
o[k2] = m[k];
});
var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
};
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.isIMetric = exports2.IMetricTag = exports2.isMetricValue = exports2.MetricValueTag = exports2.Unit = void 0;
var pengueno_1 = require_dist2();
var Unit;
(function(Unit2) {
Unit2["COUNT"] = "COUNT";
Unit2["MILLISECONDS"] = "MILLISECONDS";
})(Unit || (exports2.Unit = Unit = {}));
exports2.MetricValueTag = "MetricValue";
var isMetricValue = (t) => (0, pengueno_1.isTagged)(t, exports2.MetricValueTag);
exports2.isMetricValue = isMetricValue;
exports2.IMetricTag = "IMetric";
var isIMetric = (t) => (0, pengueno_1.isTagged)(t, exports2.IMetricTag);
exports2.isIMetric = isIMetric;
__exportStar(require_emittable(), exports2);
__exportStar(require_metric(), exports2);
__exportStar(require_trace(), exports2);
}
});
// node_modules/@emprespresso/pengueno/dist/trace/log/ansi.js
var require_ansi = __commonJS({
"node_modules/@emprespresso/pengueno/dist/trace/log/ansi.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.ANSI = void 0;
exports2.ANSI = {
RESET: "\x1B[0m",
BOLD: "\x1B[1m",
DIM: "\x1B[2m",
RED: "\x1B[31m",
GREEN: "\x1B[32m",
YELLOW: "\x1B[33m",
BLUE: "\x1B[34m",
MAGENTA: "\x1B[35m",
CYAN: "\x1B[36m",
WHITE: "\x1B[37m",
BRIGHT_RED: "\x1B[91m",
BRIGHT_YELLOW: "\x1B[93m",
GRAY: "\x1B[90m"
};
}
});
// node_modules/@emprespresso/pengueno/dist/trace/log/level.js
var require_level = __commonJS({
"node_modules/@emprespresso/pengueno/dist/trace/log/level.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.isLogLevel = exports2.logLevelOrder = exports2.LogLevel = void 0;
var LogLevel;
(function(LogLevel2) {
LogLevel2["UNKNOWN"] = "UNKNOWN";
LogLevel2["INFO"] = "INFO";
LogLevel2["WARN"] = "WARN";
LogLevel2["DEBUG"] = "DEBUG";
LogLevel2["ERROR"] = "ERROR";
LogLevel2["SYS"] = "SYS";
})(LogLevel || (exports2.LogLevel = LogLevel = {}));
exports2.logLevelOrder = [
LogLevel.DEBUG,
LogLevel.INFO,
LogLevel.WARN,
LogLevel.ERROR,
LogLevel.SYS
];
var isLogLevel = (l) => typeof l === "string" && exports2.logLevelOrder.some((level) => level === l);
exports2.isLogLevel = isLogLevel;
}
});
// node_modules/@emprespresso/pengueno/dist/trace/log/logger.js
var require_logger = __commonJS({
"node_modules/@emprespresso/pengueno/dist/trace/log/logger.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
}
});
// node_modules/@emprespresso/pengueno/dist/trace/log/pretty_json_console.js
var require_pretty_json_console = __commonJS({
"node_modules/@emprespresso/pengueno/dist/trace/log/pretty_json_console.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.PrettyJsonConsoleLogger = void 0;
var index_1 = require_log();
var PrettyJsonConsoleLogger = class {
log(level, ...trace) {
const message = JSON.stringify({
level,
trace
}, null, 4);
const styled = `${this.getStyle(level)}${message}${index_1.ANSI.RESET}
`;
this.getStream(level)(styled);
}
getStream(level) {
if (level === index_1.LogLevel.ERROR) {
return console.error;
}
return console.log;
}
getStyle(level) {
switch (level) {
case index_1.LogLevel.UNKNOWN:
case index_1.LogLevel.INFO:
return `${index_1.ANSI.MAGENTA}`;
case index_1.LogLevel.DEBUG:
return `${index_1.ANSI.CYAN}`;
case index_1.LogLevel.WARN:
return `${index_1.ANSI.BRIGHT_YELLOW}`;
case index_1.LogLevel.ERROR:
return `${index_1.ANSI.BRIGHT_RED}`;
case index_1.LogLevel.SYS:
return `${index_1.ANSI.DIM}${index_1.ANSI.BLUE}`;
}
}
};
exports2.PrettyJsonConsoleLogger = PrettyJsonConsoleLogger;
}
});
// node_modules/@emprespresso/pengueno/dist/trace/log/trace.js
var require_trace2 = __commonJS({
"node_modules/@emprespresso/pengueno/dist/trace/log/trace.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.LogTrace = void 0;
var pengueno_1 = require_dist2();
var index_1 = require_log();
var LogTrace = class _LogTrace {
logger;
traces;
defaultLevel;
allowedLevels;
constructor(logger = new index_1.PrettyJsonConsoleLogger(), traces = [defaultTrace], defaultLevel = index_1.LogLevel.INFO, allowedLevels = defaultAllowedLevelsSupplier) {
this.logger = logger;
this.traces = traces;
this.defaultLevel = defaultLevel;
this.allowedLevels = allowedLevels;
}
traceScope(trace) {
return new _LogTrace(this.logger, this.traces.concat(trace), this.defaultLevel, this.allowedLevels);
}
trace(trace) {
const { traces, level: _level } = this.foldTraces(this.traces.concat(trace));
if (!this.allowedLevels().has(_level))
return;
const level = _level === index_1.LogLevel.UNKNOWN ? this.defaultLevel : _level;
this.logger.log(level, ...traces);
}
foldTraces(_traces) {
const _logTraces = _traces.map((trace) => typeof trace === "function" ? trace() : trace);
const _level = _logTraces.filter((trace) => (0, index_1.isLogLevel)(trace)).reduce((acc, level2) => Math.max(index_1.logLevelOrder.indexOf(level2), acc), -1);
const level = index_1.logLevelOrder[_level] ?? index_1.LogLevel.UNKNOWN;
const traces = _logTraces.filter((trace) => !(0, index_1.isLogLevel)(trace)).map((trace) => {
if (typeof trace === "object") {
return `TracedException.Name = ${trace.name}, TracedException.Message = ${trace.message}, TracedException.Stack = ${trace.stack}`;
}
return trace;
});
return {
level,
traces
};
}
};
exports2.LogTrace = LogTrace;
var defaultTrace = () => `TimeStamp = ${(/* @__PURE__ */ new Date()).toISOString()}`;
var defaultAllowedLevels = (0, pengueno_1.memoize)((isDebug) => /* @__PURE__ */ new Set([
index_1.LogLevel.UNKNOWN,
...isDebug ? [index_1.LogLevel.DEBUG] : [],
index_1.LogLevel.INFO,
index_1.LogLevel.WARN,
index_1.LogLevel.ERROR,
index_1.LogLevel.SYS
]));
var defaultAllowedLevelsSupplier = () => defaultAllowedLevels((0, pengueno_1.isDebug)());
}
});
// node_modules/@emprespresso/pengueno/dist/trace/log/index.js
var require_log = __commonJS({
"node_modules/@emprespresso/pengueno/dist/trace/log/index.js"(exports2) {
"use strict";
var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
o[k2] = m[k];
});
var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
};
Object.defineProperty(exports2, "__esModule", { value: true });
__exportStar(require_ansi(), exports2);
__exportStar(require_level(), exports2);
__exportStar(require_logger(), exports2);
__exportStar(require_pretty_json_console(), exports2);
__exportStar(require_trace2(), exports2);
}
});
// node_modules/@emprespresso/pengueno/dist/trace/trace.js
var require_trace3 = __commonJS({
"node_modules/@emprespresso/pengueno/dist/trace/trace.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.LogMetricTraceable = exports2.LogMetricTrace = exports2.EmbeddedMetricsTraceable = exports2.LogTraceable = void 0;
var _1 = require_trace4();
var LogTraceable = class _LogTraceable extends _1.TraceableImpl {
static LogTrace = new _1.LogTrace();
static of(t) {
return new _LogTraceable(t, _LogTraceable.LogTrace);
}
};
exports2.LogTraceable = LogTraceable;
var getEmbeddedMetricConsumer = (logTrace) => (metrics) => {
if (metrics.length === 0)
return;
logTrace.traceScope(_1.LogLevel.SYS).trace(`Metrics = ${JSON.stringify(metrics)}`);
};
var EmbeddedMetricsTraceable = class _EmbeddedMetricsTraceable extends _1.TraceableImpl {
static MetricsTrace = new _1.MetricsTrace(getEmbeddedMetricConsumer(LogTraceable.LogTrace));
static of(t, metricsTrace = _EmbeddedMetricsTraceable.MetricsTrace) {
return new _EmbeddedMetricsTraceable(t, metricsTrace);
}
};
exports2.EmbeddedMetricsTraceable = EmbeddedMetricsTraceable;
var LogMetricTrace = class _LogMetricTrace {
logTrace;
metricsTrace;
constructor(logTrace, metricsTrace) {
this.logTrace = logTrace;
this.metricsTrace = metricsTrace;
}
traceScope(trace) {
if ((0, _1.isMetricsTraceSupplier)(trace)) {
return new _LogMetricTrace(this.logTrace, this.metricsTrace.traceScope(trace));
}
return new _LogMetricTrace(this.logTrace.traceScope(trace), this.metricsTrace);
}
trace(trace) {
if ((0, _1.isMetricsTraceSupplier)(trace)) {
this.metricsTrace.trace(trace);
return this;
}
this.logTrace.trace(trace);
return this;
}
};
exports2.LogMetricTrace = LogMetricTrace;
var LogMetricTraceable = class _LogMetricTraceable extends _1.TraceableImpl {
static ofLogTraceable(t) {
const metricsTrace = new _1.MetricsTrace(getEmbeddedMetricConsumer(t.trace));
return new _LogMetricTraceable(t.get(), new LogMetricTrace(t.trace, metricsTrace));
}
static of(t) {
const logTrace = LogTraceable.of(t);
return _LogMetricTraceable.ofLogTraceable(logTrace);
}
};
exports2.LogMetricTraceable = LogMetricTraceable;
}
});
// node_modules/@emprespresso/pengueno/dist/trace/util.js
var require_util = __commonJS({
"node_modules/@emprespresso/pengueno/dist/trace/util.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.TraceUtil = void 0;
var pengueno_1 = require_dist2();
var TraceUtil = class _TraceUtil {
static promiseify(mapper) {
return (traceablePromise) => traceablePromise.flatMapAsync(async (t) => t.move(await t.get()).map(mapper)).get();
}
static traceResultingEither(metric, warnOnFailure = false) {
return (t) => {
if (metric)
t.trace.trace(t.get().fold((_err) => warnOnFailure ? metric.warn : metric.failure, (_ok) => metric.success));
return t.traceScope((_t) => _t.get().fold((_err) => warnOnFailure ? pengueno_1.LogLevel.WARN : pengueno_1.LogLevel.ERROR, (_ok) => pengueno_1.LogLevel.INFO));
};
}
static withTrace(trace) {
return (t) => t.traceScope(() => trace);
}
static withMetricTrace(metric) {
return _TraceUtil.withTrace(metric);
}
static withFunctionTrace(f) {
return _TraceUtil.withTrace(`fn.${f.name}`);
}
static withClassTrace(c) {
return _TraceUtil.withTrace(`class.${c.constructor.name}`);
}
};
exports2.TraceUtil = TraceUtil;
}
});
// node_modules/@emprespresso/pengueno/dist/trace/index.js
var require_trace4 = __commonJS({
"node_modules/@emprespresso/pengueno/dist/trace/index.js"(exports2) {
"use strict";
var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
o[k2] = m[k];
});
var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
};
Object.defineProperty(exports2, "__esModule", { value: true });
__exportStar(require_itrace(), exports2);
__exportStar(require_metric2(), exports2);
__exportStar(require_log(), exports2);
__exportStar(require_trace3(), exports2);
__exportStar(require_util(), exports2);
}
});
// node_modules/@emprespresso/pengueno/dist/process/exec.js
var require_exec = __commonJS({
"node_modules/@emprespresso/pengueno/dist/process/exec.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.getStdoutMany = exports2.getStdout = exports2.CmdMetric = void 0;
var pengueno_1 = require_dist2();
var node_child_process_1 = require("node:child_process");
exports2.CmdMetric = pengueno_1.Metric.fromName("Exec").asResult();
var getStdout = (cmd, options = { streamTraceable: [] }) => cmd.flatMap(pengueno_1.TraceUtil.withFunctionTrace(exports2.getStdout)).flatMap((tCmd) => tCmd.traceScope(() => `Command = ${tCmd.get()}`)).map((tCmd) => {
const cmd2 = tCmd.get();
const _exec = typeof cmd2 === "string" ? cmd2 : cmd2.join(" ");
const env = options.clearEnv ? options.env : { ...process.env, ...options.env };
return pengueno_1.Either.fromFailableAsync(new Promise((res, rej) => {
const proc = (0, node_child_process_1.exec)(_exec, { env });
let stdout = "";
proc.stdout?.on("data", (d) => {
const s = d.toString();
stdout += s;
if (options.streamTraceable?.includes("stdout")) {
tCmd.trace.trace(s);
}
});
const stderr = "";
proc.stderr?.on("data", (d) => {
const s = d.toString();
stdout += s;
if (options.streamTraceable?.includes("stderr")) {
tCmd.trace.trace(s);
}
});
proc.on("exit", (code) => {
const streams = { stdout, stderr };
if (code === 0) {
res(streams);
} else {
rej(new Error(`exited with non-zero code: ${code}. ${stderr}`));
}
});
}));
}).map(pengueno_1.TraceUtil.promiseify((tEitherStdStreams) => tEitherStdStreams.get().mapRight(({ stderr, stdout }) => {
if (stderr)
tEitherStdStreams.trace.traceScope(pengueno_1.LogLevel.DEBUG).trace(`StdErr = ${stderr}`);
return stdout;
}))).peek(pengueno_1.TraceUtil.promiseify(pengueno_1.TraceUtil.traceResultingEither(exports2.CmdMetric))).get();
exports2.getStdout = getStdout;
var getStdoutMany = (cmds, options = { streamTraceable: [] }) => cmds.coExtend((t) => t.get()).reduce(async (_result, tCmd) => {
const result = await _result;
return result.joinRightAsync(() => tCmd.map((cmd) => (0, exports2.getStdout)(cmd, options)).get(), (stdout, pre) => pre.concat(stdout));
}, Promise.resolve(pengueno_1.Either.right([])));
exports2.getStdoutMany = getStdoutMany;
}
});
// node_modules/@emprespresso/pengueno/dist/process/env.js
var require_env = __commonJS({
"node_modules/@emprespresso/pengueno/dist/process/env.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.getRequiredEnvVars = exports2.getRequiredEnv = exports2.getEnv = void 0;
var pengueno_1 = require_dist2();
var getEnv = (name) => pengueno_1.Optional.from(process.env[name]);
exports2.getEnv = getEnv;
var getRequiredEnv = (name) => pengueno_1.Either.fromFailable(() => (0, exports2.getEnv)(name).get()).mapLeft(() => new Error(`environment variable "${name}" is required D:`));
exports2.getRequiredEnv = getRequiredEnv;
var getRequiredEnvVars = (vars) => {
const emptyEnvironment = pengueno_1.Either.right({});
const addTo = (env, key, val) => ({
...env,
[key]: val
});
return vars.reduce((environment, key) => environment.joinRight((0, exports2.getRequiredEnv)(key), (value, environment2) => addTo(environment2, key, value)), emptyEnvironment);
};
exports2.getRequiredEnvVars = getRequiredEnvVars;
}
});
// node_modules/@emprespresso/pengueno/dist/process/validate_identifier.js
var require_validate_identifier = __commonJS({
"node_modules/@emprespresso/pengueno/dist/process/validate_identifier.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.validateExecutionEntries = exports2.validateIdentifier = void 0;
var pengueno_1 = require_dist2();
var validateIdentifier = (token) => {
return /^[a-zA-Z0-9_\?\&\=\-:. \/]+$/.test(token) && !token.includes("..");
};
exports2.validateIdentifier = validateIdentifier;
var validateExecutionEntries = (obj) => {
const invalidEntries = Object.entries(obj).filter((e) => !e.every((x) => typeof x === "string" && (0, exports2.validateIdentifier)(x)));
if (invalidEntries.length > 0)
return pengueno_1.Either.left(invalidEntries);
return pengueno_1.Either.right(obj);
};
exports2.validateExecutionEntries = validateExecutionEntries;
}
});
// node_modules/@emprespresso/pengueno/dist/process/argv.js
var require_argv = __commonJS({
"node_modules/@emprespresso/pengueno/dist/process/argv.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.argv = exports2.getArg = exports2.isArgKey = void 0;
var pengueno_1 = require_dist2();
var isArgKey = (k) => k.startsWith("--");
exports2.isArgKey = isArgKey;
var getArg = (arg, argv2, whenValue) => {
const argIndex = pengueno_1.Optional.from(argv2.findIndex((_argv) => (0, exports2.isArgKey)(_argv) && _argv.split("=")[0] === arg)).filter((index) => index >= 0 && index < argv2.length);
if (!argIndex.present()) {
return pengueno_1.Optional.from(whenValue.absent).map((v) => pengueno_1.Either.right(v)).orSome(() => pengueno_1.Either.left(new Error(`arg ${arg} is not present in arguments list and does not have an 'absent' value`))).get();
}
return argIndex.flatMap((idx) => pengueno_1.Optional.from(argv2.at(idx)).map((_argv) => _argv.includes("=") ? _argv.split("=")[1] : argv2.at(idx + 1))).filter((next) => !(0, exports2.isArgKey)(next)).map((next) => whenValue.present(next)).orSome(() => whenValue.unspecified).map((v) => pengueno_1.Either.right(v)).get();
};
exports2.getArg = getArg;
var argv = (args, handlers, argv2 = process.argv.slice(2)) => {
const defaultHandler = { present: (value) => value };
const processArg = (arg) => {
const handler = handlers?.[arg] ?? defaultHandler;
return (0, exports2.getArg)(arg, argv2, handler).mapRight((value) => [arg, value]);
};
const res = args.map(processArg).reduce((acc, current) => acc.flatMap((accValue) => current.mapRight(([key, value]) => ({
...accValue,
[key]: value
}))), pengueno_1.Either.right({})).mapRight((result) => result);
return res;
};
exports2.argv = argv;
}
});
// node_modules/@emprespresso/pengueno/dist/process/signals.js
var require_signals = __commonJS({
"node_modules/@emprespresso/pengueno/dist/process/signals.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.Signals = exports2.SigTermMetric = exports2.SigIntMetric = void 0;
var pengueno_1 = require_dist2();
exports2.SigIntMetric = pengueno_1.Metric.fromName("SigInt").asResult();
exports2.SigTermMetric = pengueno_1.Metric.fromName("SigTerm").asResult();
var Signals = class {
static async awaitClose(t) {
const success = pengueno_1.Either.right(void 0);
return new Promise((res) => {
const metricizedInterruptHandler = (metric) => (err) => t.flatMap(pengueno_1.TraceUtil.withMetricTrace(metric)).peek((_t) => _t.trace.trace("closing")).move(pengueno_1.Optional.from(err).map((e) => pengueno_1.Either.left(e)).orSome(() => success).get()).flatMap(pengueno_1.TraceUtil.traceResultingEither(metric)).map((e) => res(e.get())).peek((_t) => _t.trace.trace("finished")).get();
const sigintCloser = metricizedInterruptHandler(exports2.SigIntMetric);
const sigtermCloser = metricizedInterruptHandler(exports2.SigTermMetric);
process.on("SIGINT", () => t.flatMap(pengueno_1.TraceUtil.withTrace("SIGINT")).get().close(sigintCloser));
process.on("SIGTERM", () => t.flatMap(pengueno_1.TraceUtil.withTrace("SIGTERM")).get().close(sigtermCloser));
});
}
};
exports2.Signals = Signals;
}
});
// node_modules/@emprespresso/pengueno/dist/process/index.js
var require_process = __commonJS({
"node_modules/@emprespresso/pengueno/dist/process/index.js"(exports2) {
"use strict";
var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
o[k2] = m[k];
});
var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
};
Object.defineProperty(exports2, "__esModule", { value: true });
__exportStar(require_exec(), exports2);
__exportStar(require_env(), exports2);
__exportStar(require_validate_identifier(), exports2);
__exportStar(require_argv(), exports2);
__exportStar(require_signals(), exports2);
}
});
// node_modules/@emprespresso/pengueno/dist/server/http/body.js
var require_body = __commonJS({
"node_modules/@emprespresso/pengueno/dist/server/http/body.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
}
});
// node_modules/@emprespresso/pengueno/dist/server/http/status.js
var require_status = __commonJS({
"node_modules/@emprespresso/pengueno/dist/server/http/status.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.HttpStatusCodes = void 0;
exports2.HttpStatusCodes = {
100: "Continue",
101: "Switching Protocols",
102: "Processing (WebDAV)",
200: "OK",
201: "Created",
202: "Accepted",
203: "Non-Authoritative Information",
204: "No Content",
205: "Reset Content",
206: "Partial Content",
207: "Multi-Status (WebDAV)",
208: "Already Reported (WebDAV)",
226: "IM Used",
300: "Multiple Choices",
301: "Moved Permanently",
302: "Found",
303: "See Other",
304: "Not Modified",
305: "Use Proxy",
306: "(Unused)",
307: "Temporary Redirect",
308: "Permanent Redirect (experimental)",
400: "Bad Request",
401: "Unauthorized",
402: "Payment Required",
403: "Forbidden",
404: "Not Found",
405: "Method Not Allowed",
406: "Not Acceptable",
407: "Proxy Authentication Required",
408: "Request Timeout",
409: "Conflict",
410: "Gone",
411: "Length Required",
412: "Precondition Failed",
413: "Request Entity Too Large",
414: "Request-URI Too Long",
415: "Unsupported Media Type",
416: "Requested Range Not Satisfiable",
417: "Expectation Failed",
418: "I'm a teapot (RFC 2324)",
420: "Enhance Your Calm (Twitter)",
422: "Unprocessable Entity (WebDAV)",
423: "Locked (WebDAV)",
424: "Failed Dependency (WebDAV)",
425: "Reserved for WebDAV",
426: "Upgrade Required",
428: "Precondition Required",
429: "Too Many Requests",
431: "Request Header Fields Too Large",
444: "No Response (Nginx)",
449: "Retry With (Microsoft)",
450: "Blocked by Windows Parental Controls (Microsoft)",
451: "Unavailable For Legal Reasons",
499: "Client Closed Request (Nginx)",
500: "Internal Server Error",
501: "Not Implemented",
502: "Bad Gateway",
503: "Service Unavailable",
504: "Gateway Timeout",
505: "HTTP Version Not Supported",
506: "Variant Also Negotiates (Experimental)",
507: "Insufficient Storage (WebDAV)",
508: "Loop Detected (WebDAV)",
509: "Bandwidth Limit Exceeded (Apache)",
510: "Not Extended",
511: "Network Authentication Required",
598: "Network read timeout error",
599: "Network connect timeout error"
};
}
});
// node_modules/@emprespresso/pengueno/dist/server/http/method.js
var require_method = __commonJS({
"node_modules/@emprespresso/pengueno/dist/server/http/method.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
}
});
// node_modules/@emprespresso/pengueno/dist/server/http/index.js
var require_http = __commonJS({
"node_modules/@emprespresso/pengueno/dist/server/http/index.js"(exports2) {
"use strict";
var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
o[k2] = m[k];
});
var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
};
Object.defineProperty(exports2, "__esModule", { value: true });
__exportStar(require_body(), exports2);
__exportStar(require_status(), exports2);
__exportStar(require_method(), exports2);
}
});
// node_modules/@emprespresso/pengueno/dist/server/response/pengueno.js
var require_pengueno = __commonJS({
"node_modules/@emprespresso/pengueno/dist/server/response/pengueno.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.JsonResponse = exports2.PenguenoResponse = exports2.getResponseMetrics = void 0;
var pengueno_1 = require_dist2();
var getHeaders = (req, extraHeaders) => {
const optHeaders = {
...req.getResponseHeaders(),
...extraHeaders
};
optHeaders["Content-Type"] = (optHeaders["Content-Type"] ?? "text/plain") + "; charset=utf-8";
return optHeaders;
};
var ResponseCodeMetrics = [0, 1, 2, 3, 4, 5].map((x) => pengueno_1.Metric.fromName(`response.${x}xx`).asResult());
var getResponseMetrics = (status, elapsedMs) => {
const index = Math.floor(status / 100);
return ResponseCodeMetrics.flatMap((metric, i) => pengueno_1.Optional.from(i).filter((i2) => i2 === index).map(() => [metric.count.withValue(1)]).flatMap((metricValues) => pengueno_1.Optional.from(elapsedMs).map((ms) => metricValues.concat(metric.time.withValue(ms))).orSome(() => metricValues)).orSome(() => [metric.count.withValue(0)]).get());
};
exports2.getResponseMetrics = getResponseMetrics;
var PenguenoResponse = class {
_body;
statusText;
status;
headers;
constructor(req, _body, opts) {
this._body = _body;
this.headers = getHeaders(req.get(), opts?.headers ?? {});
this.status = opts.status;
this.statusText = opts.statusText ?? pengueno_1.HttpStatusCodes[this.status];
req.trace.trace((0, exports2.getResponseMetrics)(opts.status, req.get().elapsedTimeMs()));
}
body() {
return this._body;
}
};
exports2.PenguenoResponse = PenguenoResponse;
var JsonResponse = class extends PenguenoResponse {
constructor(req, e, _opts) {
const opts = { ..._opts, headers: { ..._opts.headers, "Content-Type": "application/json" } };
if ((0, pengueno_1.isEither)(e)) {
super(req, JSON.stringify(e.fold((error) => ({ error, ok: void 0 }), (ok) => ({ ok }))), opts);
return;
}
super(req, JSON.stringify(Math.floor(opts.status / 100) > 4 ? { error: e } : { ok: e }), opts);
}
};
exports2.JsonResponse = JsonResponse;
}
});
// node_modules/@emprespresso/pengueno/dist/server/response/index.js
var require_response = __commonJS({
"node_modules/@emprespresso/pengueno/dist/server/response/index.js"(exports2) {
"use strict";
var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
o[k2] = m[k];
});
var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
};
Object.defineProperty(exports2, "__esModule", { value: true });
__exportStar(require_pengueno(), exports2);
}
});
// node_modules/@emprespresso/pengueno/dist/server/request/pengueno.js
var require_pengueno2 = __commonJS({
"node_modules/@emprespresso/pengueno/dist/server/request/pengueno.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.PenguenoRequest = void 0;
var greetings = ["hewwo :D", "hiya cutie", "boop!", "sending virtual hugs!", "stay pawsitive"];
var penguenoGreeting = () => greetings[Math.floor(Math.random() * greetings.length)];
var PenguenoRequest = class _PenguenoRequest {
req;
id;
at;
constructor(req, id, at) {
this.req = req;
this.id = id;
this.at = at;
}
elapsedTimeMs(after = () => Date.now()) {
return after() - this.at.getTime();
}
getResponseHeaders() {
const RequestId = this.id;
const RequestReceivedUnix = this.at.getTime();
const RequestHandleUnix = Date.now();
const DeltaUnix = this.elapsedTimeMs(() => RequestHandleUnix);
const Hai = penguenoGreeting();
return Object.entries({
RequestId,
RequestReceivedUnix,
RequestHandleUnix,
DeltaUnix,
Hai
}).reduce((acc, [key, val]) => ({ ...acc, [key]: val.toString() }), {});
}
static from(request) {
const id = crypto.randomUUID();
return request.bimap((tRequest) => {
const request2 = tRequest.get();
const url = new URL(request2.url);
const { pathname } = url;
const trace = `RequestId = ${id}, Method = ${request2.method}, Path = ${pathname}`;
return { item: new _PenguenoRequest(request2, id, /* @__PURE__ */ new Date()), trace };
});
}
};
exports2.PenguenoRequest = PenguenoRequest;
}
});
// node_modules/@emprespresso/pengueno/dist/server/request/index.js
var require_request = __commonJS({
"node_modules/@emprespresso/pengueno/dist/server/request/index.js"(exports2) {
"use strict";
var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
o[k2] = m[k];
});
var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
};
Object.defineProperty(exports2, "__esModule", { value: true });
__exportStar(require_pengueno2(), exports2);
}
});
// node_modules/@emprespresso/pengueno/dist/server/activity/health.js
var require_health = __commonJS({
"node_modules/@emprespresso/pengueno/dist/server/activity/health.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.HealthCheckActivityImpl = exports2.HealthCheckOutput = exports2.HealthCheckInput = void 0;
var pengueno_1 = require_dist2();
var HealthCheckInput;
(function(HealthCheckInput2) {
HealthCheckInput2[HealthCheckInput2["CHECK"] = 0] = "CHECK";
})(HealthCheckInput || (exports2.HealthCheckInput = HealthCheckInput = {}));
var HealthCheckOutput;
(function(HealthCheckOutput2) {
HealthCheckOutput2[HealthCheckOutput2["YAASSSLAYQUEEN"] = 0] = "YAASSSLAYQUEEN";
})(HealthCheckOutput || (exports2.HealthCheckOutput = HealthCheckOutput = {}));
var healthCheckMetric = pengueno_1.Metric.fromName("Health").asResult();
var HealthCheckActivityImpl = class {
check;
constructor(check) {
this.check = check;
}
checkHealth(req) {
return req.flatMap(pengueno_1.TraceUtil.withFunctionTrace(this.checkHealth)).flatMap(pengueno_1.TraceUtil.withMetricTrace(healthCheckMetric)).flatMap((r) => r.move(HealthCheckInput.CHECK).map((input) => this.check(input))).peek(pengueno_1.TraceUtil.promiseify(pengueno_1.TraceUtil.traceResultingEither(healthCheckMetric))).map(pengueno_1.TraceUtil.promiseify((h) => {
const { status, message } = h.get().fold(() => ({ status: 500, message: "err" }), () => ({ status: 200, message: "ok" }));
return new pengueno_1.JsonResponse(req, message, { status });
})).get();
}
};
exports2.HealthCheckActivityImpl = HealthCheckActivityImpl;
}
});
// node_modules/@emprespresso/pengueno/dist/server/activity/fourohfour.js
var require_fourohfour = __commonJS({
"node_modules/@emprespresso/pengueno/dist/server/activity/fourohfour.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.FourOhFourActivityImpl = void 0;
var pengueno_1 = require_dist2();
var messages = [
"D: meow-t found! your api call ran away!",
"404-bidden! but like...in a cute way >:3 !",
":< your data went on a paw-sible vacation!",
"uwu~ not found, but found our hearts instead!"
];
var randomFourOhFour = () => messages[Math.floor(Math.random() * messages.length)];
var FourOhFourActivityImpl = class {
fourOhFour(req) {
return req.move(new pengueno_1.JsonResponse(req, randomFourOhFour(), { status: 404 })).map((resp) => Promise.resolve(resp.get())).get();
}
};
exports2.FourOhFourActivityImpl = FourOhFourActivityImpl;
}
});
// node_modules/@emprespresso/pengueno/dist/server/activity/index.js
var require_activity = __commonJS({
"node_modules/@emprespresso/pengueno/dist/server/activity/index.js"(exports2) {
"use strict";
var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
o[k2] = m[k];
});
var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
};
Object.defineProperty(exports2, "__esModule", { value: true });
__exportStar(require_health(), exports2);
__exportStar(require_fourohfour(), exports2);
}
});
// node_modules/@emprespresso/pengueno/dist/server/filter/method.js
var require_method2 = __commonJS({
"node_modules/@emprespresso/pengueno/dist/server/filter/method.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.requireMethod = void 0;
var pengueno_1 = require_dist2();
var requireMethod = (methods) => (req) => req.flatMap(pengueno_1.TraceUtil.withFunctionTrace(exports2.requireMethod)).map((t) => {
const { req: { method } } = t.get();
if (!methods.includes(method)) {
const msg = "that's not how you pet me (\u22DF\uFE4F\u22DE)~";
t.trace.traceScope(pengueno_1.LogLevel.WARN).trace(msg);
return pengueno_1.Either.left(new pengueno_1.PenguenoError(msg, 405));
}
return pengueno_1.Either.right(method);
}).get();
exports2.requireMethod = requireMethod;
}
});
// node_modules/@emprespresso/pengueno/dist/server/filter/json.js
var require_json = __commonJS({
"node_modules/@emprespresso/pengueno/dist/server/filter/json.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.jsonModel = void 0;
var pengueno_1 = require_dist2();
var ParseJsonMetric = pengueno_1.Metric.fromName("JsonParse").asResult();
var jsonModel = (jsonTransformer) => (r) => r.flatMap(pengueno_1.TraceUtil.withFunctionTrace(exports2.jsonModel)).flatMap(pengueno_1.TraceUtil.withMetricTrace(ParseJsonMetric)).map((j) => pengueno_1.Either.fromFailableAsync(j.get().req.json()).then((either) => either.mapLeft((errReason) => {
j.trace.traceScope(pengueno_1.LogLevel.WARN).trace(errReason);
return new pengueno_1.PenguenoError("seems to be invalid JSON (>//<) can you fix?", 400);
}))).flatMapAsync(pengueno_1.TraceUtil.promiseify(pengueno_1.TraceUtil.traceResultingEither(ParseJsonMetric))).map(pengueno_1.TraceUtil.promiseify((traceableEitherJson) => traceableEitherJson.get().mapRight((j) => traceableEitherJson.move(j)).flatMap(jsonTransformer))).get();
exports2.jsonModel = jsonModel;
}
});
// node_modules/@emprespresso/pengueno/dist/server/filter/index.js
var require_filter = __commonJS({
"node_modules/@emprespresso/pengueno/dist/server/filter/index.js"(exports2) {
"use strict";
var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
o[k2] = m[k];
});
var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
};
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.PenguenoError = exports2.ErrorSource = void 0;
var pengueno_1 = require_dist2();
var ErrorSource;
(function(ErrorSource2) {
ErrorSource2["USER"] = "WARN";
ErrorSource2["SYSTEM"] = "ERROR";
})(ErrorSource || (exports2.ErrorSource = ErrorSource = {}));
var PenguenoError = class extends Error {
message;
status;
source;
constructor(message, status) {
super(message);
this.message = message;
this.status = status;
this.source = Math.floor(status / 100) === 4 ? ErrorSource.USER : ErrorSource.SYSTEM;
}
};
exports2.PenguenoError = PenguenoError;
__exportStar(require_method2(), exports2);
__exportStar(require_json(), exports2);
}
});
// node_modules/hono/dist/cjs/compose.js
var require_compose = __commonJS({
"node_modules/hono/dist/cjs/compose.js"(exports2, module2) {
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var compose_exports = {};
__export(compose_exports, {
compose: () => compose
});
module2.exports = __toCommonJS(compose_exports);
var compose = (middleware, onError, onNotFound) => {
return (context, next) => {
let index = -1;
return dispatch(0);
async function dispatch(i) {
if (i <= index) {
throw new Error("next() called multiple times");
}
index = i;
let res;
let isError = false;
let handler;
if (middleware[i]) {
handler = middleware[i][0][0];
context.req.routeIndex = i;
} else {
handler = i === middleware.length && next || void 0;
}
if (handler) {
try {
res = await handler(context, () => dispatch(i + 1));
} catch (err) {
if (err instanceof Error && onError) {
context.error = err;
res = await onError(err, context);
isError = true;
} else {
throw err;
}
}
} else {
if (context.finalized === false && onNotFound) {
res = await onNotFound(context);
}
}
if (res && (context.finalized === false || isError)) {
context.res = res;
}
return context;
}
};
};
}
});
// node_modules/hono/dist/cjs/http-exception.js
var require_http_exception = __commonJS({
"node_modules/hono/dist/cjs/http-exception.js"(exports2, module2) {
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var http_exception_exports = {};
__export(http_exception_exports, {
HTTPException: () => HTTPException
});
module2.exports = __toCommonJS(http_exception_exports);
var HTTPException = class extends Error {
res;
status;
/**
* Creates an instance of `HTTPException`.
* @param status - HTTP status code for the exception. Defaults to 500.
* @param options - Additional options for the exception.
*/
constructor(status = 500, options) {
super(options?.message, { cause: options?.cause });
this.res = options?.res;
this.status = status;
}
/**
* Returns the response object associated with the exception.
* If a response object is not provided, a new response is created with the error message and status code.
* @returns The response object.
*/
getResponse() {
if (this.res) {
const newResponse = new Response(this.res.body, {
status: this.status,
headers: this.res.headers
});
return newResponse;
}
return new Response(this.message, {
status: this.status
});
}
};
}
});
// node_modules/hono/dist/cjs/request/constants.js
var require_constants = __commonJS({
"node_modules/hono/dist/cjs/request/constants.js"(exports2, module2) {
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var constants_exports = {};
__export(constants_exports, {
GET_MATCH_RESULT: () => GET_MATCH_RESULT
});
module2.exports = __toCommonJS(constants_exports);
var GET_MATCH_RESULT = /* @__PURE__ */ Symbol();
}
});
// node_modules/hono/dist/cjs/utils/body.js
var require_body2 = __commonJS({
"node_modules/hono/dist/cjs/utils/body.js"(exports2, module2) {
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var body_exports = {};
__export(body_exports, {
parseBody: () => parseBody
});
module2.exports = __toCommonJS(body_exports);
var import_request = require_request2();
var parseBody = async (request, options = /* @__PURE__ */ Object.create(null)) => {
const { all = false, dot = false } = options;
const headers = request instanceof import_request.HonoRequest ? request.raw.headers : request.headers;
const contentType = headers.get("Content-Type");
if (contentType?.startsWith("multipart/form-data") || contentType?.startsWith("application/x-www-form-urlencoded")) {
return parseFormData(request, { all, dot });
}
return {};
};
async function parseFormData(request, options) {
const formData = await request.formData();
if (formData) {
return convertFormDataToBodyData(formData, options);
}
return {};
}
function convertFormDataToBodyData(formData, options) {
const form = /* @__PURE__ */ Object.create(null);
formData.forEach((value, key) => {
const shouldParseAllValues = options.all || key.endsWith("[]");
if (!shouldParseAllValues) {
form[key] = value;
} else {
handleParsingAllValues(form, key, value);
}
});
if (options.dot) {
Object.entries(form).forEach(([key, value]) => {
const shouldParseDotValues = key.includes(".");
if (shouldParseDotValues) {
handleParsingNestedValues(form, key, value);
delete form[key];
}
});
}
return form;
}
var handleParsingAllValues = (form, key, value) => {
if (form[key] !== void 0) {
if (Array.isArray(form[key])) {
;
form[key].push(value);
} else {
form[key] = [form[key], value];
}
} else {
if (!key.endsWith("[]")) {
form[key] = value;
} else {
form[key] = [value];
}
}
};
var handleParsingNestedValues = (form, key, value) => {
if (/(?:^|\.)__proto__\./.test(key)) {
return;
}
let nestedForm = form;
const keys = key.split(".");
keys.forEach((key2, index) => {
if (index === keys.length - 1) {
nestedForm[key2] = value;
} else {
if (!nestedForm[key2] || typeof nestedForm[key2] !== "object" || Array.isArray(nestedForm[key2]) || nestedForm[key2] instanceof File) {
nestedForm[key2] = /* @__PURE__ */ Object.create(null);
}
nestedForm = nestedForm[key2];
}
});
};
}
});
// node_modules/hono/dist/cjs/utils/url.js
var require_url = __commonJS({
"node_modules/hono/dist/cjs/utils/url.js"(exports2, module2) {
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var url_exports = {};
__export(url_exports, {
checkOptionalParameter: () => checkOptionalParameter,
decodeURIComponent_: () => decodeURIComponent_,
getPath: () => getPath,
getPathNoStrict: () => getPathNoStrict,
getPattern: () => getPattern,
getQueryParam: () => getQueryParam,
getQueryParams: () => getQueryParams,
getQueryStrings: () => getQueryStrings,
mergePath: () => mergePath,
splitPath: () => splitPath,
splitRoutingPath: () => splitRoutingPath,
tryDecode: () => tryDecode,
tryDecodeURI: () => tryDecodeURI
});
module2.exports = __toCommonJS(url_exports);
var splitPath = (path) => {
const paths = path.split("/");
if (paths[0] === "") {
paths.shift();
}
return paths;
};
var splitRoutingPath = (routePath) => {
const { groups, path } = extractGroupsFromPath(routePath);
const paths = splitPath(path);
return replaceGroupMarks(paths, groups);
};
var extractGroupsFromPath = (path) => {
const groups = [];
path = path.replace(/\{[^}]+\}/g, (match, index) => {
const mark = `@${index}`;
groups.push([mark, match]);
return mark;
});
return { groups, path };
};
var replaceGroupMarks = (paths, groups) => {
for (let i = groups.length - 1; i >= 0; i--) {
const [mark] = groups[i];
for (let j = paths.length - 1; j >= 0; j--) {
if (paths[j].includes(mark)) {
paths[j] = paths[j].replace(mark, groups[i][1]);
break;
}
}
}
return paths;
};
var patternCache = {};
var getPattern = (label, next) => {
if (label === "*") {
return "*";
}
const match = label.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);
if (match) {
const cacheKey = `${label}#${next}`;
if (!patternCache[cacheKey]) {
if (match[2]) {
patternCache[cacheKey] = next && next[0] !== ":" && next[0] !== "*" ? [cacheKey, match[1], new RegExp(`^${match[2]}(?=/${next})`)] : [label, match[1], new RegExp(`^${match[2]}$`)];
} else {
patternCache[cacheKey] = [label, match[1], true];
}
}
return patternCache[cacheKey];
}
return null;
};
var tryDecode = (str, decoder) => {
try {
return decoder(str);
} catch {
return str.replace(/(?:%[0-9A-Fa-f]{2})+/g, (match) => {
try {
return decoder(match);
} catch {
return match;
}
});
}
};
var tryDecodeURI = (str) => tryDecode(str, decodeURI);
var getPath = (request) => {
const url = request.url;
const start = url.indexOf("/", url.indexOf(":") + 4);
let i = start;
for (; i < url.length; i++) {
const charCode = url.charCodeAt(i);
if (charCode === 37) {
const queryIndex = url.indexOf("?", i);
const hashIndex = url.indexOf("#", i);
const end = queryIndex === -1 ? hashIndex === -1 ? void 0 : hashIndex : hashIndex === -1 ? queryIndex : Math.min(queryIndex, hashIndex);
const path = url.slice(start, end);
return tryDecodeURI(path.includes("%25") ? path.replace(/%25/g, "%2525") : path);
} else if (charCode === 63 || charCode === 35) {
break;
}
}
return url.slice(start, i);
};
var getQueryStrings = (url) => {
const queryIndex = url.indexOf("?", 8);
return queryIndex === -1 ? "" : "?" + url.slice(queryIndex + 1);
};
var getPathNoStrict = (request) => {
const result = getPath(request);
return result.length > 1 && result.at(-1) === "/" ? result.slice(0, -1) : result;
};
var mergePath = (base, sub, ...rest) => {
if (rest.length) {
sub = mergePath(sub, ...rest);
}
return `${base?.[0] === "/" ? "" : "/"}${base}${sub === "/" ? "" : `${base?.at(-1) === "/" ? "" : "/"}${sub?.[0] === "/" ? sub.slice(1) : sub}`}`;
};
var checkOptionalParameter = (path) => {
if (path.charCodeAt(path.length - 1) !== 63 || !path.includes(":")) {
return null;
}
const segments = path.split("/");
const results = [];
let basePath = "";
segments.forEach((segment) => {
if (segment !== "" && !/\:/.test(segment)) {
basePath += "/" + segment;
} else if (/\:/.test(segment)) {
if (/\?/.test(segment)) {
if (results.length === 0 && basePath === "") {
results.push("/");
} else {
results.push(basePath);
}
const optionalSegment = segment.replace("?", "");
basePath += "/" + optionalSegment;
results.push(basePath);
} else {
basePath += "/" + segment;
}
}
});
return results.filter((v, i, a) => a.indexOf(v) === i);
};
var _decodeURI = (value) => {
if (!/[%+]/.test(value)) {
return value;
}
if (value.indexOf("+") !== -1) {
value = value.replace(/\+/g, " ");
}
return value.indexOf("%") !== -1 ? tryDecode(value, decodeURIComponent_) : value;
};
var _getQueryParam = (url, key, multiple) => {
let encoded;
if (!multiple && key && !/[%+]/.test(key)) {
let keyIndex2 = url.indexOf("?", 8);
if (keyIndex2 === -1) {
return void 0;
}
if (!url.startsWith(key, keyIndex2 + 1)) {
keyIndex2 = url.indexOf(`&${key}`, keyIndex2 + 1);
}
while (keyIndex2 !== -1) {
const trailingKeyCode = url.charCodeAt(keyIndex2 + key.length + 1);
if (trailingKeyCode === 61) {
const valueIndex = keyIndex2 + key.length + 2;
const endIndex = url.indexOf("&", valueIndex);
return _decodeURI(url.slice(valueIndex, endIndex === -1 ? void 0 : endIndex));
} else if (trailingKeyCode == 38 || isNaN(trailingKeyCode)) {
return "";
}
keyIndex2 = url.indexOf(`&${key}`, keyIndex2 + 1);
}
encoded = /[%+]/.test(url);
if (!encoded) {
return void 0;
}
}
const results = {};
encoded ??= /[%+]/.test(url);
let keyIndex = url.indexOf("?", 8);
while (keyIndex !== -1) {
const nextKeyIndex = url.indexOf("&", keyIndex + 1);
let valueIndex = url.indexOf("=", keyIndex);
if (valueIndex > nextKeyIndex && nextKeyIndex !== -1) {
valueIndex = -1;
}
let name = url.slice(
keyIndex + 1,
valueIndex === -1 ? nextKeyIndex === -1 ? void 0 : nextKeyIndex : valueIndex
);
if (encoded) {
name = _decodeURI(name);
}
keyIndex = nextKeyIndex;
if (name === "") {
continue;
}
let value;
if (valueIndex === -1) {
value = "";
} else {
value = url.slice(valueIndex + 1, nextKeyIndex === -1 ? void 0 : nextKeyIndex);
if (encoded) {
value = _decodeURI(value);
}
}
if (multiple) {
if (!(results[name] && Array.isArray(results[name]))) {
results[name] = [];
}
;
results[name].push(value);
} else {
results[name] ??= value;
}
}
return key ? results[key] : results;
};
var getQueryParam = _getQueryParam;
var getQueryParams = (url, key) => {
return _getQueryParam(url, key, true);
};
var decodeURIComponent_ = decodeURIComponent;
}
});
// node_modules/hono/dist/cjs/request.js
var require_request2 = __commonJS({
"node_modules/hono/dist/cjs/request.js"(exports2, module2) {
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var request_exports = {};
__export(request_exports, {
HonoRequest: () => HonoRequest,
cloneRawRequest: () => cloneRawRequest
});
module2.exports = __toCommonJS(request_exports);
var import_http_exception = require_http_exception();
var import_constants = require_constants();
var import_body = require_body2();
var import_url = require_url();
var tryDecodeURIComponent = (str) => (0, import_url.tryDecode)(str, import_url.decodeURIComponent_);
var HonoRequest = class {
/**
* `.raw` can get the raw Request object.
*
* @see {@link https://hono.dev/docs/api/request#raw}
*
* @example
* ```ts
* // For Cloudflare Workers
* app.post('/', async (c) => {
* const metadata = c.req.raw.cf?.hostMetadata?
* ...
* })
* ```
*/
raw;
#validatedData;
// Short name of validatedData
#matchResult;
routeIndex = 0;
/**
* `.path` can get the pathname of the request.
*
* @see {@link https://hono.dev/docs/api/request#path}
*
* @example
* ```ts
* app.get('/about/me', (c) => {
* const pathname = c.req.path // `/about/me`
* })
* ```
*/
path;
bodyCache = {};
constructor(request, path = "/", matchResult = [[]]) {
this.raw = request;
this.path = path;
this.#matchResult = matchResult;
this.#validatedData = {};
}
param(key) {
return key ? this.#getDecodedParam(key) : this.#getAllDecodedParams();
}
#getDecodedParam(key) {
const paramKey = this.#matchResult[0][this.routeIndex][1][key];
const param = this.#getParamValue(paramKey);
return param && /\%/.test(param) ? tryDecodeURIComponent(param) : param;
}
#getAllDecodedParams() {
const decoded = {};
const keys = Object.keys(this.#matchResult[0][this.routeIndex][1]);
for (const key of keys) {
const value = this.#getParamValue(this.#matchResult[0][this.routeIndex][1][key]);
if (value !== void 0) {
decoded[key] = /\%/.test(value) ? tryDecodeURIComponent(value) : value;
}
}
return decoded;
}
#getParamValue(paramKey) {
return this.#matchResult[1] ? this.#matchResult[1][paramKey] : paramKey;
}
query(key) {
return (0, import_url.getQueryParam)(this.url, key);
}
queries(key) {
return (0, import_url.getQueryParams)(this.url, key);
}
header(name) {
if (name) {
return this.raw.headers.get(name) ?? void 0;
}
const headerData = {};
this.raw.headers.forEach((value, key) => {
headerData[key] = value;
});
return headerData;
}
async parseBody(options) {
return (0, import_body.parseBody)(this, options);
}
#cachedBody = (key) => {
const { bodyCache, raw } = this;
const cachedBody = bodyCache[key];
if (cachedBody) {
return cachedBody;
}
const anyCachedKey = Object.keys(bodyCache)[0];
if (anyCachedKey) {
return bodyCache[anyCachedKey].then((body) => {
if (anyCachedKey === "json") {
body = JSON.stringify(body);
}
return new Response(body)[key]();
});
}
return bodyCache[key] = raw[key]();
};
/**
* `.json()` can parse Request body of type `application/json`
*
* @see {@link https://hono.dev/docs/api/request#json}
*
* @example
* ```ts
* app.post('/entry', async (c) => {
* const body = await c.req.json()
* })
* ```
*/
json() {
return this.#cachedBody("text").then((text) => JSON.parse(text));
}
/**
* `.text()` can parse Request body of type `text/plain`
*
* @see {@link https://hono.dev/docs/api/request#text}
*
* @example
* ```ts
* app.post('/entry', async (c) => {
* const body = await c.req.text()
* })
* ```
*/
text() {
return this.#cachedBody("text");
}
/**
* `.arrayBuffer()` parse Request body as an `ArrayBuffer`
*
* @see {@link https://hono.dev/docs/api/request#arraybuffer}
*
* @example
* ```ts
* app.post('/entry', async (c) => {
* const body = await c.req.arrayBuffer()
* })
* ```
*/
arrayBuffer() {
return this.#cachedBody("arrayBuffer");
}
/**
* `.bytes()` parses the request body as a `Uint8Array`.
*
* @see {@link https://hono.dev/docs/api/request#bytes}
*
* @example
* ```ts
* app.post('/entry', async (c) => {
* const body = await c.req.bytes()
* })
* ```
*/
bytes() {
return this.#cachedBody("arrayBuffer").then((buffer) => new Uint8Array(buffer));
}
/**
* Parses the request body as a `Blob`.
* @example
* ```ts
* app.post('/entry', async (c) => {
* const body = await c.req.blob();
* });
* ```
* @see https://hono.dev/docs/api/request#blob
*/
blob() {
return this.#cachedBody("blob");
}
/**
* Parses the request body as `FormData`.
* @example
* ```ts
* app.post('/entry', async (c) => {
* const body = await c.req.formData();
* });
* ```
* @see https://hono.dev/docs/api/request#formdata
*/
formData() {
return this.#cachedBody("formData");
}
/**
* Adds validated data to the request.
*
* @param target - The target of the validation.
* @param data - The validated data to add.
*/
addValidatedData(target, data) {
this.#validatedData[target] = data;
}
valid(target) {
return this.#validatedData[target];
}
/**
* `.url()` can get the request url strings.
*
* @see {@link https://hono.dev/docs/api/request#url}
*
* @example
* ```ts
* app.get('/about/me', (c) => {
* const url = c.req.url // `http://localhost:8787/about/me`
* ...
* })
* ```
*/
get url() {
return this.raw.url;
}
/**
* `.method()` can get the method name of the request.
*
* @see {@link https://hono.dev/docs/api/request#method}
*
* @example
* ```ts
* app.get('/about/me', (c) => {
* const method = c.req.method // `GET`
* })
* ```
*/
get method() {
return this.raw.method;
}
get [import_constants.GET_MATCH_RESULT]() {
return this.#matchResult;
}
/**
* `.matchedRoutes()` can return a matched route in the handler
*
* @deprecated
*
* Use matchedRoutes helper defined in "hono/route" instead.
*
* @see {@link https://hono.dev/docs/api/request#matchedroutes}
*
* @example
* ```ts
* app.use('*', async function logger(c, next) {
* await next()
* c.req.matchedRoutes.forEach(({ handler, method, path }, i) => {
* const name = handler.name || (handler.length < 2 ? '[handler]' : '[middleware]')
* console.log(
* method,
* ' ',
* path,
* ' '.repeat(Math.max(10 - path.length, 0)),
* name,
* i === c.req.routeIndex ? '<- respond from here' : ''
* )
* })
* })
* ```
*/
get matchedRoutes() {
return this.#matchResult[0].map(([[, route]]) => route);
}
/**
* `routePath()` can retrieve the path registered within the handler
*
* @deprecated
*
* Use routePath helper defined in "hono/route" instead.
*
* @see {@link https://hono.dev/docs/api/request#routepath}
*
* @example
* ```ts
* app.get('/posts/:id', (c) => {
* return c.json({ path: c.req.routePath })
* })
* ```
*/
get routePath() {
return this.#matchResult[0].map(([[, route]]) => route)[this.routeIndex].path;
}
};
var cloneRawRequest = async (req) => {
if (!req.raw.bodyUsed) {
return req.raw.clone();
}
const cacheKey = Object.keys(req.bodyCache)[0];
if (!cacheKey) {
throw new import_http_exception.HTTPException(500, {
message: "Cannot clone request: body was already consumed and not cached. Please use HonoRequest methods (e.g., req.json(), req.text()) instead of consuming req.raw directly."
});
}
const requestInit = {
body: await req[cacheKey](),
cache: req.raw.cache,
credentials: req.raw.credentials,
headers: req.header(),
integrity: req.raw.integrity,
keepalive: req.raw.keepalive,
method: req.method,
mode: req.raw.mode,
redirect: req.raw.redirect,
referrer: req.raw.referrer,
referrerPolicy: req.raw.referrerPolicy,
signal: req.raw.signal
};
return new Request(req.url, requestInit);
};
}
});
// node_modules/hono/dist/cjs/utils/html.js
var require_html = __commonJS({
"node_modules/hono/dist/cjs/utils/html.js"(exports2, module2) {
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var html_exports = {};
__export(html_exports, {
HtmlEscapedCallbackPhase: () => HtmlEscapedCallbackPhase,
escapeToBuffer: () => escapeToBuffer,
raw: () => raw,
resolveCallback: () => resolveCallback,
resolveCallbackSync: () => resolveCallbackSync,
stringBufferToString: () => stringBufferToString
});
module2.exports = __toCommonJS(html_exports);
var HtmlEscapedCallbackPhase = {
Stringify: 1,
BeforeStream: 2,
Stream: 3
};
var raw = (value, callbacks) => {
const escapedString = new String(value);
escapedString.isEscaped = true;
escapedString.callbacks = callbacks;
return escapedString;
};
var escapeRe = /[&<>'"]/;
var stringBufferToString = async (buffer, callbacks) => {
let str = "";
callbacks ||= [];
const resolvedBuffer = await Promise.all(buffer);
for (let i = resolvedBuffer.length - 1; ; i--) {
str += resolvedBuffer[i];
i--;
if (i < 0) {
break;
}
let r = resolvedBuffer[i];
if (typeof r === "object") {
callbacks.push(...r.callbacks || []);
}
const isEscaped = r.isEscaped;
r = await (typeof r === "object" ? r.toString() : r);
if (typeof r === "object") {
callbacks.push(...r.callbacks || []);
}
if (r.isEscaped ?? isEscaped) {
str += r;
} else {
const buf = [str];
escapeToBuffer(r, buf);
str = buf[0];
}
}
return raw(str, callbacks);
};
var escapeToBuffer = (str, buffer) => {
const match = str.search(escapeRe);
if (match === -1) {
buffer[0] += str;
return;
}
let escape;
let index;
let lastIndex = 0;
for (index = match; index < str.length; index++) {
switch (str.charCodeAt(index)) {
case 34:
escape = """;
break;
case 39:
escape = "'";
break;
case 38:
escape = "&";
break;
case 60:
escape = "<";
break;
case 62:
escape = ">";
break;
default:
continue;
}
buffer[0] += str.substring(lastIndex, index) + escape;
lastIndex = index + 1;
}
buffer[0] += str.substring(lastIndex, index);
};
var resolveCallbackSync = (str) => {
const callbacks = str.callbacks;
if (!callbacks?.length) {
return str;
}
const buffer = [str];
const context = {};
callbacks.forEach((c) => c({ phase: HtmlEscapedCallbackPhase.Stringify, buffer, context }));
return buffer[0];
};
var resolveCallback = async (str, phase, preserveCallbacks, context, buffer) => {
if (typeof str === "object" && !(str instanceof String)) {
if (!(str instanceof Promise)) {
str = str.toString();
}
if (str instanceof Promise) {
str = await str;
}
}
const callbacks = str.callbacks;
if (!callbacks?.length) {
return Promise.resolve(str);
}
if (buffer) {
buffer[0] += str;
} else {
buffer = [str];
}
const resStr = Promise.all(callbacks.map((c) => c({ phase, buffer, context }))).then(
(res) => Promise.all(
res.filter(Boolean).map((str2) => resolveCallback(str2, phase, false, context, buffer))
).then(() => buffer[0])
);
if (preserveCallbacks) {
return raw(await resStr, callbacks);
} else {
return resStr;
}
};
}
});
// node_modules/hono/dist/cjs/context.js
var require_context = __commonJS({
"node_modules/hono/dist/cjs/context.js"(exports2, module2) {
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var context_exports = {};
__export(context_exports, {
Context: () => Context2,
TEXT_PLAIN: () => TEXT_PLAIN
});
module2.exports = __toCommonJS(context_exports);
var import_request = require_request2();
var import_html = require_html();
var TEXT_PLAIN = "text/plain; charset=UTF-8";
var setDefaultContentType = (contentType, headers) => {
return {
"Content-Type": contentType,
...headers
};
};
var createResponseInstance = (body, init) => new Response(body, init);
var Context2 = class {
#rawRequest;
#req;
/**
* `.env` can get bindings (environment variables, secrets, KV namespaces, D1 database, R2 bucket etc.) in Cloudflare Workers.
*
* @see {@link https://hono.dev/docs/api/context#env}
*
* @example
* ```ts
* // Environment object for Cloudflare Workers
* app.get('*', async c => {
* const counter = c.env.COUNTER
* })
* ```
*/
env = {};
#var;
finalized = false;
/**
* `.error` can get the error object from the middleware if the Handler throws an error.
*
* @see {@link https://hono.dev/docs/api/context#error}
*
* @example
* ```ts
* app.use('*', async (c, next) => {
* await next()
* if (c.error) {
* // do something...
* }
* })
* ```
*/
error;
#status;
#executionCtx;
#res;
#layout;
#renderer;
#notFoundHandler;
#preparedHeaders;
#matchResult;
#path;
/**
* Creates an instance of the Context class.
*
* @param req - The Request object.
* @param options - Optional configuration options for the context.
*/
constructor(req, options) {
this.#rawRequest = req;
if (options) {
this.#executionCtx = options.executionCtx;
this.env = options.env;
this.#notFoundHandler = options.notFoundHandler;
this.#path = options.path;
this.#matchResult = options.matchResult;
}
}
/**
* `.req` is the instance of {@link HonoRequest}.
*/
get req() {
this.#req ??= new import_request.HonoRequest(this.#rawRequest, this.#path, this.#matchResult);
return this.#req;
}
/**
* @see {@link https://hono.dev/docs/api/context#event}
* The FetchEvent associated with the current request.
*
* @throws Will throw an error if the context does not have a FetchEvent.
*/
get event() {
if (this.#executionCtx && "respondWith" in this.#executionCtx) {
return this.#executionCtx;
} else {
throw Error("This context has no FetchEvent");
}
}
/**
* @see {@link https://hono.dev/docs/api/context#executionctx}
* The ExecutionContext associated with the current request.
*
* @throws Will throw an error if the context does not have an ExecutionContext.
*/
get executionCtx() {
if (this.#executionCtx) {
return this.#executionCtx;
} else {
throw Error("This context has no ExecutionContext");
}
}
/**
* @see {@link https://hono.dev/docs/api/context#res}
* The Response object for the current request.
*/
get res() {
return this.#res ||= createResponseInstance(null, {
headers: this.#preparedHeaders ??= new Headers()
});
}
/**
* Sets the Response object for the current request.
*
* @param _res - The Response object to set.
*/
set res(_res) {
if (this.#res && _res) {
_res = createResponseInstance(_res.body, _res);
for (const [k, v] of this.#res.headers.entries()) {
if (k === "content-type") {
continue;
}
if (k === "set-cookie") {
const cookies = this.#res.headers.getSetCookie();
_res.headers.delete("set-cookie");
for (const cookie of cookies) {
_res.headers.append("set-cookie", cookie);
}
} else {
_res.headers.set(k, v);
}
}
}
this.#res = _res;
this.finalized = true;
}
/**
* `.render()` can create a response within a layout.
*
* @see {@link https://hono.dev/docs/api/context#render-setrenderer}
*
* @example
* ```ts
* app.get('/', (c) => {
* return c.render('Hello!')
* })
* ```
*/
render = (...args) => {
this.#renderer ??= (content) => this.html(content);
return this.#renderer(...args);
};
/**
* Sets the layout for the response.
*
* @param layout - The layout to set.
* @returns The layout function.
*/
setLayout = (layout) => this.#layout = layout;
/**
* Gets the current layout for the response.
*
* @returns The current layout function.
*/
getLayout = () => this.#layout;
/**
* `.setRenderer()` can set the layout in the custom middleware.
*
* @see {@link https://hono.dev/docs/api/context#render-setrenderer}
*
* @example
* ```tsx
* app.use('*', async (c, next) => {
* c.setRenderer((content) => {
* return c.html(
*
*
* {content}
*
*
* )
* })
* await next()
* })
* ```
*/
setRenderer = (renderer) => {
this.#renderer = renderer;
};
/**
* `.header()` can set headers.
*
* @see {@link https://hono.dev/docs/api/context#header}
*
* @example
* ```ts
* app.get('/welcome', (c) => {
* // Set headers
* c.header('X-Message', 'Hello!')
* c.header('Content-Type', 'text/plain')
*
* return c.body('Thank you for coming')
* })
* ```
*/
header = (name, value, options) => {
if (this.finalized) {
this.#res = createResponseInstance(this.#res.body, this.#res);
}
const headers = this.#res ? this.#res.headers : this.#preparedHeaders ??= new Headers();
if (value === void 0) {
headers.delete(name);
} else if (options?.append) {
headers.append(name, value);
} else {
headers.set(name, value);
}
};
status = (status) => {
this.#status = status;
};
/**
* `.set()` can set the value specified by the key.
*
* @see {@link https://hono.dev/docs/api/context#set-get}
*
* @example
* ```ts
* app.use('*', async (c, next) => {
* c.set('message', 'Hono is hot!!')
* await next()
* })
* ```
*/
set = (key, value) => {
this.#var ??= /* @__PURE__ */ new Map();
this.#var.set(key, value);
};
/**
* `.get()` can use the value specified by the key.
*
* @see {@link https://hono.dev/docs/api/context#set-get}
*
* @example
* ```ts
* app.get('/', (c) => {
* const message = c.get('message')
* return c.text(`The message is "${message}"`)
* })
* ```
*/
get = (key) => {
return this.#var ? this.#var.get(key) : void 0;
};
/**
* `.var` can access the value of a variable.
*
* @see {@link https://hono.dev/docs/api/context#var}
*
* @example
* ```ts
* const result = c.var.client.oneMethod()
* ```
*/
// c.var.propName is a read-only
get var() {
if (!this.#var) {
return {};
}
return Object.fromEntries(this.#var);
}
#newResponse(data, arg, headers) {
const responseHeaders = this.#res ? new Headers(this.#res.headers) : this.#preparedHeaders ?? new Headers();
if (typeof arg === "object" && "headers" in arg) {
const argHeaders = arg.headers instanceof Headers ? arg.headers : new Headers(arg.headers);
for (const [key, value] of argHeaders) {
if (key.toLowerCase() === "set-cookie") {
responseHeaders.append(key, value);
} else {
responseHeaders.set(key, value);
}
}
}
if (headers) {
for (const [k, v] of Object.entries(headers)) {
if (typeof v === "string") {
responseHeaders.set(k, v);
} else {
responseHeaders.delete(k);
for (const v2 of v) {
responseHeaders.append(k, v2);
}
}
}
}
const status = typeof arg === "number" ? arg : arg?.status ?? this.#status;
return createResponseInstance(data, { status, headers: responseHeaders });
}
newResponse = (...args) => this.#newResponse(...args);
/**
* `.body()` can return the HTTP response.
* You can set headers with `.header()` and set HTTP status code with `.status`.
* This can also be set in `.text()`, `.json()` and so on.
*
* @see {@link https://hono.dev/docs/api/context#body}
*
* @example
* ```ts
* app.get('/welcome', (c) => {
* // Set headers
* c.header('X-Message', 'Hello!')
* c.header('Content-Type', 'text/plain')
* // Set HTTP status code
* c.status(201)
*
* // Return the response body
* return c.body('Thank you for coming')
* })
* ```
*/
body = (data, arg, headers) => this.#newResponse(data, arg, headers);
/**
* `.text()` can render text as `Content-Type:text/plain`.
*
* @see {@link https://hono.dev/docs/api/context#text}
*
* @example
* ```ts
* app.get('/say', (c) => {
* return c.text('Hello!')
* })
* ```
*/
text = (text, arg, headers) => {
return !this.#preparedHeaders && !this.#status && !arg && !headers && !this.finalized ? new Response(text) : this.#newResponse(
text,
arg,
setDefaultContentType(TEXT_PLAIN, headers)
);
};
/**
* `.json()` can render JSON as `Content-Type:application/json`.
*
* @see {@link https://hono.dev/docs/api/context#json}
*
* @example
* ```ts
* app.get('/api', (c) => {
* return c.json({ message: 'Hello!' })
* })
* ```
*/
json = (object, arg, headers) => {
return this.#newResponse(
JSON.stringify(object),
arg,
setDefaultContentType("application/json", headers)
);
};
html = (html, arg, headers) => {
const res = (html2) => this.#newResponse(html2, arg, setDefaultContentType("text/html; charset=UTF-8", headers));
return typeof html === "object" ? (0, import_html.resolveCallback)(html, import_html.HtmlEscapedCallbackPhase.Stringify, false, {}).then(res) : res(html);
};
/**
* `.redirect()` can Redirect, default status code is 302.
*
* @see {@link https://hono.dev/docs/api/context#redirect}
*
* @example
* ```ts
* app.get('/redirect', (c) => {
* return c.redirect('/')
* })
* app.get('/redirect-permanently', (c) => {
* return c.redirect('/', 301)
* })
* ```
*/
redirect = (location, status) => {
const locationString = String(location);
this.header(
"Location",
// Multibyes should be encoded
// eslint-disable-next-line no-control-regex
!/[^\x00-\xFF]/.test(locationString) ? locationString : encodeURI(locationString)
);
return this.newResponse(null, status ?? 302);
};
/**
* `.notFound()` can return the Not Found Response.
*
* @see {@link https://hono.dev/docs/api/context#notfound}
*
* @example
* ```ts
* app.get('/notfound', (c) => {
* return c.notFound()
* })
* ```
*/
notFound = () => {
this.#notFoundHandler ??= () => createResponseInstance();
return this.#notFoundHandler(this);
};
};
}
});
// node_modules/hono/dist/cjs/router.js
var require_router = __commonJS({
"node_modules/hono/dist/cjs/router.js"(exports2, module2) {
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var router_exports = {};
__export(router_exports, {
MESSAGE_MATCHER_IS_ALREADY_BUILT: () => MESSAGE_MATCHER_IS_ALREADY_BUILT,
METHODS: () => METHODS,
METHOD_NAME_ALL: () => METHOD_NAME_ALL,
METHOD_NAME_ALL_LOWERCASE: () => METHOD_NAME_ALL_LOWERCASE,
UnsupportedPathError: () => UnsupportedPathError
});
module2.exports = __toCommonJS(router_exports);
var METHOD_NAME_ALL = "ALL";
var METHOD_NAME_ALL_LOWERCASE = "all";
var METHODS = ["get", "post", "put", "delete", "options", "patch"];
var MESSAGE_MATCHER_IS_ALREADY_BUILT = "Can not add a route since the matcher is already built.";
var UnsupportedPathError = class extends Error {
};
}
});
// node_modules/hono/dist/cjs/utils/constants.js
var require_constants2 = __commonJS({
"node_modules/hono/dist/cjs/utils/constants.js"(exports2, module2) {
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var constants_exports = {};
__export(constants_exports, {
COMPOSED_HANDLER: () => COMPOSED_HANDLER
});
module2.exports = __toCommonJS(constants_exports);
var COMPOSED_HANDLER = "__COMPOSED_HANDLER";
}
});
// node_modules/hono/dist/cjs/hono-base.js
var require_hono_base = __commonJS({
"node_modules/hono/dist/cjs/hono-base.js"(exports2, module2) {
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var hono_base_exports = {};
__export(hono_base_exports, {
HonoBase: () => Hono2
});
module2.exports = __toCommonJS(hono_base_exports);
var import_compose = require_compose();
var import_context = require_context();
var import_router = require_router();
var import_constants = require_constants2();
var import_url = require_url();
var notFoundHandler = (c) => {
return c.text("404 Not Found", 404);
};
var errorHandler = (err, c) => {
if ("getResponse" in err) {
const res = err.getResponse();
return c.newResponse(res.body, res);
}
console.error(err);
return c.text("Internal Server Error", 500);
};
var Hono2 = class _Hono {
get;
post;
put;
delete;
options;
patch;
all;
on;
use;
/*
This class is like an abstract class and does not have a router.
To use it, inherit the class and implement router in the constructor.
*/
router;
getPath;
// Cannot use `#` because it requires visibility at JavaScript runtime.
_basePath = "/";
#path = "/";
routes = [];
constructor(options = {}) {
const allMethods = [...import_router.METHODS, import_router.METHOD_NAME_ALL_LOWERCASE];
allMethods.forEach((method) => {
this[method] = (args1, ...args) => {
if (typeof args1 === "string") {
this.#path = args1;
} else {
this.#addRoute(method, this.#path, args1);
}
args.forEach((handler) => {
this.#addRoute(method, this.#path, handler);
});
return this;
};
});
this.on = (method, path, ...handlers) => {
for (const p of [path].flat()) {
this.#path = p;
for (const m of [method].flat()) {
handlers.map((handler) => {
this.#addRoute(m.toUpperCase(), this.#path, handler);
});
}
}
return this;
};
this.use = (arg1, ...handlers) => {
if (typeof arg1 === "string") {
this.#path = arg1;
} else {
this.#path = "*";
handlers.unshift(arg1);
}
handlers.forEach((handler) => {
this.#addRoute(import_router.METHOD_NAME_ALL, this.#path, handler);
});
return this;
};
const { strict, ...optionsWithoutStrict } = options;
Object.assign(this, optionsWithoutStrict);
this.getPath = strict ?? true ? options.getPath ?? import_url.getPath : import_url.getPathNoStrict;
}
#clone() {
const clone = new _Hono({
router: this.router,
getPath: this.getPath
});
clone.errorHandler = this.errorHandler;
clone.#notFoundHandler = this.#notFoundHandler;
clone.routes = this.routes;
return clone;
}
#notFoundHandler = notFoundHandler;
// Cannot use `#` because it requires visibility at JavaScript runtime.
errorHandler = errorHandler;
/**
* `.route()` allows grouping other Hono instance in routes.
*
* @see {@link https://hono.dev/docs/api/routing#grouping}
*
* @param {string} path - base Path
* @param {Hono} app - other Hono instance
* @returns {Hono} routed Hono instance
*
* @example
* ```ts
* const app = new Hono()
* const app2 = new Hono()
*
* app2.get("/user", (c) => c.text("user"))
* app.route("/api", app2) // GET /api/user
* ```
*/
route(path, app) {
const subApp = this.basePath(path);
app.routes.map((r) => {
let handler;
if (app.errorHandler === errorHandler) {
handler = r.handler;
} else {
handler = async (c, next) => (await (0, import_compose.compose)([], app.errorHandler)(c, () => r.handler(c, next))).res;
handler[import_constants.COMPOSED_HANDLER] = r.handler;
}
subApp.#addRoute(r.method, r.path, handler, r.basePath);
});
return this;
}
/**
* `.basePath()` allows base paths to be specified.
*
* @see {@link https://hono.dev/docs/api/routing#base-path}
*
* @param {string} path - base Path
* @returns {Hono} changed Hono instance
*
* @example
* ```ts
* const api = new Hono().basePath('/api')
* ```
*/
basePath(path) {
const subApp = this.#clone();
subApp._basePath = (0, import_url.mergePath)(this._basePath, path);
return subApp;
}
/**
* `.onError()` handles an error and returns a customized Response.
*
* @see {@link https://hono.dev/docs/api/hono#error-handling}
*
* @param {ErrorHandler} handler - request Handler for error
* @returns {Hono} changed Hono instance
*
* @example
* ```ts
* app.onError((err, c) => {
* console.error(`${err}`)
* return c.text('Custom Error Message', 500)
* })
* ```
*/
onError = (handler) => {
this.errorHandler = handler;
return this;
};
/**
* `.notFound()` allows you to customize a Not Found Response.
*
* @see {@link https://hono.dev/docs/api/hono#not-found}
*
* @param {NotFoundHandler} handler - request handler for not-found
* @returns {Hono} changed Hono instance
*
* @example
* ```ts
* app.notFound((c) => {
* return c.text('Custom 404 Message', 404)
* })
* ```
*/
notFound = (handler) => {
this.#notFoundHandler = handler;
return this;
};
/**
* `.mount()` allows you to mount applications built with other frameworks into your Hono application.
*
* @see {@link https://hono.dev/docs/api/hono#mount}
*
* @param {string} path - base Path
* @param {Function} applicationHandler - other Request Handler
* @param {MountOptions} [options] - options of `.mount()`
* @returns {Hono} mounted Hono instance
*
* @example
* ```ts
* import { Router as IttyRouter } from 'itty-router'
* import { Hono } from 'hono'
* // Create itty-router application
* const ittyRouter = IttyRouter()
* // GET /itty-router/hello
* ittyRouter.get('/hello', () => new Response('Hello from itty-router'))
*
* const app = new Hono()
* app.mount('/itty-router', ittyRouter.handle)
* ```
*
* @example
* ```ts
* const app = new Hono()
* // Send the request to another application without modification.
* app.mount('/app', anotherApp, {
* replaceRequest: (req) => req,
* })
* ```
*/
mount(path, applicationHandler, options) {
let replaceRequest;
let optionHandler;
if (options) {
if (typeof options === "function") {
optionHandler = options;
} else {
optionHandler = options.optionHandler;
if (options.replaceRequest === false) {
replaceRequest = (request) => request;
} else {
replaceRequest = options.replaceRequest;
}
}
}
const getOptions = optionHandler ? (c) => {
const options2 = optionHandler(c);
return Array.isArray(options2) ? options2 : [options2];
} : (c) => {
let executionContext = void 0;
try {
executionContext = c.executionCtx;
} catch {
}
return [c.env, executionContext];
};
replaceRequest ||= (() => {
const mergedPath = (0, import_url.mergePath)(this._basePath, path);
const pathPrefixLength = mergedPath === "/" ? 0 : mergedPath.length;
return (request) => {
const url = new URL(request.url);
url.pathname = this.getPath(request).slice(pathPrefixLength) || "/";
return new Request(url, request);
};
})();
const handler = async (c, next) => {
const res = await applicationHandler(replaceRequest(c.req.raw), ...getOptions(c));
if (res) {
return res;
}
await next();
};
this.#addRoute(import_router.METHOD_NAME_ALL, (0, import_url.mergePath)(path, "*"), handler);
return this;
}
#addRoute(method, path, handler, baseRoutePath) {
method = method.toUpperCase();
path = (0, import_url.mergePath)(this._basePath, path);
const r = {
basePath: baseRoutePath !== void 0 ? (0, import_url.mergePath)(this._basePath, baseRoutePath) : this._basePath,
path,
method,
handler
};
this.router.add(method, path, [handler, r]);
this.routes.push(r);
}
#handleError(err, c) {
if (err instanceof Error) {
return this.errorHandler(err, c);
}
throw err;
}
#dispatch(request, executionCtx, env, method) {
if (method === "HEAD") {
return (async () => new Response(null, await this.#dispatch(request, executionCtx, env, "GET")))();
}
const path = this.getPath(request, { env });
const matchResult = this.router.match(method, path);
const c = new import_context.Context(request, {
path,
matchResult,
env,
executionCtx,
notFoundHandler: this.#notFoundHandler
});
if (matchResult[0].length === 1) {
let res;
try {
res = matchResult[0][0][0][0](c, async () => {
c.res = await this.#notFoundHandler(c);
});
} catch (err) {
return this.#handleError(err, c);
}
return res instanceof Promise ? res.then(
(resolved) => resolved || (c.finalized ? c.res : this.#notFoundHandler(c))
).catch((err) => this.#handleError(err, c)) : res ?? this.#notFoundHandler(c);
}
const composed = (0, import_compose.compose)(matchResult[0], this.errorHandler, this.#notFoundHandler);
return (async () => {
try {
const context = await composed(c);
if (!context.finalized) {
throw new Error(
"Context is not finalized. Did you forget to return a Response object or `await next()`?"
);
}
return context.res;
} catch (err) {
return this.#handleError(err, c);
}
})();
}
/**
* `.fetch()` will be entry point of your app.
*
* @see {@link https://hono.dev/docs/api/hono#fetch}
*
* @param {Request} request - request Object of request
* @param {Env} Env - env Object
* @param {ExecutionContext} - context of execution
* @returns {Response | Promise} response of request
*
*/
fetch = (request, ...rest) => {
return this.#dispatch(request, rest[1], rest[0], request.method);
};
/**
* `.request()` is a useful method for testing.
* You can pass a URL or pathname to send a GET request.
* app will return a Response object.
* ```ts
* test('GET /hello is ok', async () => {
* const res = await app.request('/hello')
* expect(res.status).toBe(200)
* })
* ```
* @see https://hono.dev/docs/api/hono#request
*/
request = (input, requestInit, Env, executionCtx) => {
if (input instanceof Request) {
return this.fetch(requestInit ? new Request(input, requestInit) : input, Env, executionCtx);
}
input = input.toString();
return this.fetch(
new Request(
/^https?:\/\//.test(input) ? input : `http://localhost${(0, import_url.mergePath)("/", input)}`,
requestInit
),
Env,
executionCtx
);
};
/**
* `.fire()` automatically adds a global fetch event listener.
* This can be useful for environments that adhere to the Service Worker API, such as non-ES module Cloudflare Workers.
* @deprecated
* Use `fire` from `hono/service-worker` instead.
* ```ts
* import { Hono } from 'hono'
* import { fire } from 'hono/service-worker'
*
* const app = new Hono()
* // ...
* fire(app)
* ```
* @see https://hono.dev/docs/api/hono#fire
* @see https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API
* @see https://developers.cloudflare.com/workers/reference/migrate-to-module-workers/
*/
fire = () => {
addEventListener("fetch", (event) => {
event.respondWith(this.#dispatch(event.request, event, void 0, event.request.method));
});
};
};
}
});
// node_modules/hono/dist/cjs/router/reg-exp-router/matcher.js
var require_matcher = __commonJS({
"node_modules/hono/dist/cjs/router/reg-exp-router/matcher.js"(exports2, module2) {
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var matcher_exports = {};
__export(matcher_exports, {
emptyParam: () => emptyParam,
match: () => match
});
module2.exports = __toCommonJS(matcher_exports);
var import_router = require_router();
var emptyParam = [];
function match(method, path) {
const matchers = this.buildAllMatchers();
const match2 = (method2, path2) => {
const matcher = matchers[method2] || matchers[import_router.METHOD_NAME_ALL];
const staticMatch = matcher[2][path2];
if (staticMatch) {
return staticMatch;
}
const match3 = path2.match(matcher[0]);
if (!match3) {
return [[], emptyParam];
}
const index = match3.indexOf("", 1);
return [matcher[1][index], match3];
};
this.match = match2;
return match2(method, path);
}
}
});
// node_modules/hono/dist/cjs/router/reg-exp-router/node.js
var require_node = __commonJS({
"node_modules/hono/dist/cjs/router/reg-exp-router/node.js"(exports2, module2) {
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var node_exports = {};
__export(node_exports, {
Node: () => Node,
PATH_ERROR: () => PATH_ERROR
});
module2.exports = __toCommonJS(node_exports);
var LABEL_REG_EXP_STR = "[^/]+";
var ONLY_WILDCARD_REG_EXP_STR = ".*";
var TAIL_WILDCARD_REG_EXP_STR = "(?:|/.*)";
var PATH_ERROR = /* @__PURE__ */ Symbol();
var regExpMetaChars = new Set(".\\+*[^]$()");
function compareKey(a, b) {
if (a.length === 1) {
return b.length === 1 ? a < b ? -1 : 1 : -1;
}
if (b.length === 1) {
return 1;
}
if (a === ONLY_WILDCARD_REG_EXP_STR || a === TAIL_WILDCARD_REG_EXP_STR) {
return 1;
} else if (b === ONLY_WILDCARD_REG_EXP_STR || b === TAIL_WILDCARD_REG_EXP_STR) {
return -1;
}
if (a === LABEL_REG_EXP_STR) {
return 1;
} else if (b === LABEL_REG_EXP_STR) {
return -1;
}
return a.length === b.length ? a < b ? -1 : 1 : b.length - a.length;
}
var Node = class _Node {
#index;
#varIndex;
#children = /* @__PURE__ */ Object.create(null);
insert(tokens, index, paramMap, context, pathErrorCheckOnly) {
if (tokens.length === 0) {
if (this.#index !== void 0) {
throw PATH_ERROR;
}
if (pathErrorCheckOnly) {
return;
}
this.#index = index;
return;
}
const [token, ...restTokens] = tokens;
const pattern = token === "*" ? restTokens.length === 0 ? ["", "", ONLY_WILDCARD_REG_EXP_STR] : ["", "", LABEL_REG_EXP_STR] : token === "/*" ? ["", "", TAIL_WILDCARD_REG_EXP_STR] : token.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);
let node;
if (pattern) {
const name = pattern[1];
let regexpStr = pattern[2] || LABEL_REG_EXP_STR;
if (name && pattern[2]) {
if (regexpStr === ".*") {
throw PATH_ERROR;
}
regexpStr = regexpStr.replace(/^\((?!\?:)(?=[^)]+\)$)/, "(?:");
if (/\((?!\?:)/.test(regexpStr)) {
throw PATH_ERROR;
}
}
node = this.#children[regexpStr];
if (!node) {
if (Object.keys(this.#children).some(
(k) => k !== ONLY_WILDCARD_REG_EXP_STR && k !== TAIL_WILDCARD_REG_EXP_STR
)) {
throw PATH_ERROR;
}
if (pathErrorCheckOnly) {
return;
}
node = this.#children[regexpStr] = new _Node();
if (name !== "") {
node.#varIndex = context.varIndex++;
}
}
if (!pathErrorCheckOnly && name !== "") {
paramMap.push([name, node.#varIndex]);
}
} else {
node = this.#children[token];
if (!node) {
if (Object.keys(this.#children).some(
(k) => k.length > 1 && k !== ONLY_WILDCARD_REG_EXP_STR && k !== TAIL_WILDCARD_REG_EXP_STR
)) {
throw PATH_ERROR;
}
if (pathErrorCheckOnly) {
return;
}
node = this.#children[token] = new _Node();
}
}
node.insert(restTokens, index, paramMap, context, pathErrorCheckOnly);
}
buildRegExpStr() {
const childKeys = Object.keys(this.#children).sort(compareKey);
const strList = childKeys.map((k) => {
const c = this.#children[k];
return (typeof c.#varIndex === "number" ? `(${k})@${c.#varIndex}` : regExpMetaChars.has(k) ? `\\${k}` : k) + c.buildRegExpStr();
});
if (typeof this.#index === "number") {
strList.unshift(`#${this.#index}`);
}
if (strList.length === 0) {
return "";
}
if (strList.length === 1) {
return strList[0];
}
return "(?:" + strList.join("|") + ")";
}
};
}
});
// node_modules/hono/dist/cjs/router/reg-exp-router/trie.js
var require_trie = __commonJS({
"node_modules/hono/dist/cjs/router/reg-exp-router/trie.js"(exports2, module2) {
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var trie_exports = {};
__export(trie_exports, {
Trie: () => Trie
});
module2.exports = __toCommonJS(trie_exports);
var import_node = require_node();
var Trie = class {
#context = { varIndex: 0 };
#root = new import_node.Node();
insert(path, index, pathErrorCheckOnly) {
const paramAssoc = [];
const groups = [];
for (let i = 0; ; ) {
let replaced = false;
path = path.replace(/\{[^}]+\}/g, (m) => {
const mark = `@\\${i}`;
groups[i] = [mark, m];
i++;
replaced = true;
return mark;
});
if (!replaced) {
break;
}
}
const tokens = path.match(/(?::[^\/]+)|(?:\/\*$)|./g) || [];
for (let i = groups.length - 1; i >= 0; i--) {
const [mark] = groups[i];
for (let j = tokens.length - 1; j >= 0; j--) {
if (tokens[j].indexOf(mark) !== -1) {
tokens[j] = tokens[j].replace(mark, groups[i][1]);
break;
}
}
}
this.#root.insert(tokens, index, paramAssoc, this.#context, pathErrorCheckOnly);
return paramAssoc;
}
buildRegExp() {
let regexp = this.#root.buildRegExpStr();
if (regexp === "") {
return [/^$/, [], []];
}
let captureIndex = 0;
const indexReplacementMap = [];
const paramReplacementMap = [];
regexp = regexp.replace(/#(\d+)|@(\d+)|\.\*\$/g, (_, handlerIndex, paramIndex) => {
if (handlerIndex !== void 0) {
indexReplacementMap[++captureIndex] = Number(handlerIndex);
return "$()";
}
if (paramIndex !== void 0) {
paramReplacementMap[Number(paramIndex)] = ++captureIndex;
return "";
}
return "";
});
return [new RegExp(`^${regexp}`), indexReplacementMap, paramReplacementMap];
}
};
}
});
// node_modules/hono/dist/cjs/router/reg-exp-router/router.js
var require_router2 = __commonJS({
"node_modules/hono/dist/cjs/router/reg-exp-router/router.js"(exports2, module2) {
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var router_exports = {};
__export(router_exports, {
RegExpRouter: () => RegExpRouter2
});
module2.exports = __toCommonJS(router_exports);
var import_router = require_router();
var import_url = require_url();
var import_matcher = require_matcher();
var import_node = require_node();
var import_trie = require_trie();
var nullMatcher = [/^$/, [], /* @__PURE__ */ Object.create(null)];
var wildcardRegExpCache = /* @__PURE__ */ Object.create(null);
function buildWildcardRegExp(path) {
return wildcardRegExpCache[path] ??= new RegExp(
path === "*" ? "" : `^${path.replace(
/\/\*$|([.\\+*[^\]$()])/g,
(_, metaChar) => metaChar ? `\\${metaChar}` : "(?:|/.*)"
)}$`
);
}
function clearWildcardRegExpCache() {
wildcardRegExpCache = /* @__PURE__ */ Object.create(null);
}
function buildMatcherFromPreprocessedRoutes(routes) {
const trie = new import_trie.Trie();
const handlerData = [];
if (routes.length === 0) {
return nullMatcher;
}
const routesWithStaticPathFlag = routes.map(
(route) => [!/\*|\/:/.test(route[0]), ...route]
).sort(
([isStaticA, pathA], [isStaticB, pathB]) => isStaticA ? 1 : isStaticB ? -1 : pathA.length - pathB.length
);
const staticMap = /* @__PURE__ */ Object.create(null);
for (let i = 0, j = -1, len = routesWithStaticPathFlag.length; i < len; i++) {
const [pathErrorCheckOnly, path, handlers] = routesWithStaticPathFlag[i];
if (pathErrorCheckOnly) {
staticMap[path] = [handlers.map(([h]) => [h, /* @__PURE__ */ Object.create(null)]), import_matcher.emptyParam];
} else {
j++;
}
let paramAssoc;
try {
paramAssoc = trie.insert(path, j, pathErrorCheckOnly);
} catch (e) {
throw e === import_node.PATH_ERROR ? new import_router.UnsupportedPathError(path) : e;
}
if (pathErrorCheckOnly) {
continue;
}
handlerData[j] = handlers.map(([h, paramCount]) => {
const paramIndexMap = /* @__PURE__ */ Object.create(null);
paramCount -= 1;
for (; paramCount >= 0; paramCount--) {
const [key, value] = paramAssoc[paramCount];
paramIndexMap[key] = value;
}
return [h, paramIndexMap];
});
}
const [regexp, indexReplacementMap, paramReplacementMap] = trie.buildRegExp();
for (let i = 0, len = handlerData.length; i < len; i++) {
for (let j = 0, len2 = handlerData[i].length; j < len2; j++) {
const map = handlerData[i][j]?.[1];
if (!map) {
continue;
}
const keys = Object.keys(map);
for (let k = 0, len3 = keys.length; k < len3; k++) {
map[keys[k]] = paramReplacementMap[map[keys[k]]];
}
}
}
const handlerMap = [];
for (const i in indexReplacementMap) {
handlerMap[i] = handlerData[indexReplacementMap[i]];
}
return [regexp, handlerMap, staticMap];
}
function findMiddleware(middleware, path) {
if (!middleware) {
return void 0;
}
for (const k of Object.keys(middleware).sort((a, b) => b.length - a.length)) {
if (buildWildcardRegExp(k).test(path)) {
return [...middleware[k]];
}
}
return void 0;
}
var RegExpRouter2 = class {
name = "RegExpRouter";
#middleware;
#routes;
constructor() {
this.#middleware = { [import_router.METHOD_NAME_ALL]: /* @__PURE__ */ Object.create(null) };
this.#routes = { [import_router.METHOD_NAME_ALL]: /* @__PURE__ */ Object.create(null) };
}
add(method, path, handler) {
const middleware = this.#middleware;
const routes = this.#routes;
if (!middleware || !routes) {
throw new Error(import_router.MESSAGE_MATCHER_IS_ALREADY_BUILT);
}
if (!middleware[method]) {
;
[middleware, routes].forEach((handlerMap) => {
handlerMap[method] = /* @__PURE__ */ Object.create(null);
Object.keys(handlerMap[import_router.METHOD_NAME_ALL]).forEach((p) => {
handlerMap[method][p] = [...handlerMap[import_router.METHOD_NAME_ALL][p]];
});
});
}
if (path === "/*") {
path = "*";
}
const paramCount = (path.match(/\/:/g) || []).length;
if (/\*$/.test(path)) {
const re = buildWildcardRegExp(path);
if (method === import_router.METHOD_NAME_ALL) {
Object.keys(middleware).forEach((m) => {
middleware[m][path] ||= findMiddleware(middleware[m], path) || findMiddleware(middleware[import_router.METHOD_NAME_ALL], path) || [];
});
} else {
middleware[method][path] ||= findMiddleware(middleware[method], path) || findMiddleware(middleware[import_router.METHOD_NAME_ALL], path) || [];
}
Object.keys(middleware).forEach((m) => {
if (method === import_router.METHOD_NAME_ALL || method === m) {
Object.keys(middleware[m]).forEach((p) => {
re.test(p) && middleware[m][p].push([handler, paramCount]);
});
}
});
Object.keys(routes).forEach((m) => {
if (method === import_router.METHOD_NAME_ALL || method === m) {
Object.keys(routes[m]).forEach(
(p) => re.test(p) && routes[m][p].push([handler, paramCount])
);
}
});
return;
}
const paths = (0, import_url.checkOptionalParameter)(path) || [path];
for (let i = 0, len = paths.length; i < len; i++) {
const path2 = paths[i];
Object.keys(routes).forEach((m) => {
if (method === import_router.METHOD_NAME_ALL || method === m) {
routes[m][path2] ||= [
...findMiddleware(middleware[m], path2) || findMiddleware(middleware[import_router.METHOD_NAME_ALL], path2) || []
];
routes[m][path2].push([handler, paramCount - len + i + 1]);
}
});
}
}
match = import_matcher.match;
buildAllMatchers() {
const matchers = /* @__PURE__ */ Object.create(null);
Object.keys(this.#routes).concat(Object.keys(this.#middleware)).forEach((method) => {
matchers[method] ||= this.#buildMatcher(method);
});
this.#middleware = this.#routes = void 0;
clearWildcardRegExpCache();
return matchers;
}
#buildMatcher(method) {
const routes = [];
let hasOwnRoute = method === import_router.METHOD_NAME_ALL;
[this.#middleware, this.#routes].forEach((r) => {
const ownRoute = r[method] ? Object.keys(r[method]).map((path) => [path, r[method][path]]) : [];
if (ownRoute.length !== 0) {
hasOwnRoute ||= true;
routes.push(...ownRoute);
} else if (method !== import_router.METHOD_NAME_ALL) {
routes.push(
...Object.keys(r[import_router.METHOD_NAME_ALL]).map((path) => [path, r[import_router.METHOD_NAME_ALL][path]])
);
}
});
if (!hasOwnRoute) {
return null;
} else {
return buildMatcherFromPreprocessedRoutes(routes);
}
}
};
}
});
// node_modules/hono/dist/cjs/router/reg-exp-router/prepared-router.js
var require_prepared_router = __commonJS({
"node_modules/hono/dist/cjs/router/reg-exp-router/prepared-router.js"(exports2, module2) {
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var prepared_router_exports = {};
__export(prepared_router_exports, {
PreparedRegExpRouter: () => PreparedRegExpRouter2,
buildInitParams: () => buildInitParams2,
serializeInitParams: () => serializeInitParams2
});
module2.exports = __toCommonJS(prepared_router_exports);
var import_router = require_router();
var import_matcher = require_matcher();
var import_router2 = require_router2();
var PreparedRegExpRouter2 = class {
name = "PreparedRegExpRouter";
#matchers;
#relocateMap;
constructor(matchers, relocateMap) {
this.#matchers = matchers;
this.#relocateMap = relocateMap;
}
#addWildcard(method, handlerData) {
const matcher = this.#matchers[method];
matcher[1].forEach((list) => list && list.push(handlerData));
Object.values(matcher[2]).forEach((list) => list[0].push(handlerData));
}
#addPath(method, path, handler, indexes, map) {
const matcher = this.#matchers[method];
if (!map) {
matcher[2][path][0].push([handler, {}]);
} else {
indexes.forEach((index) => {
if (typeof index === "number") {
matcher[1][index].push([handler, map]);
} else {
;
matcher[2][index || path][0].push([handler, map]);
}
});
}
}
add(method, path, handler) {
if (!this.#matchers[method]) {
const all = this.#matchers[import_router.METHOD_NAME_ALL];
const staticMap = {};
for (const key in all[2]) {
staticMap[key] = [all[2][key][0].slice(), import_matcher.emptyParam];
}
this.#matchers[method] = [
all[0],
all[1].map((list) => Array.isArray(list) ? list.slice() : 0),
staticMap
];
}
if (path === "/*" || path === "*") {
const handlerData = [handler, {}];
if (method === import_router.METHOD_NAME_ALL) {
for (const m in this.#matchers) {
this.#addWildcard(m, handlerData);
}
} else {
this.#addWildcard(method, handlerData);
}
return;
}
const data = this.#relocateMap[path];
if (!data) {
throw new Error(`Path ${path} is not registered`);
}
for (const [indexes, map] of data) {
if (method === import_router.METHOD_NAME_ALL) {
for (const m in this.#matchers) {
this.#addPath(m, path, handler, indexes, map);
}
} else {
this.#addPath(method, path, handler, indexes, map);
}
}
}
buildAllMatchers() {
return this.#matchers;
}
match = import_matcher.match;
};
var buildInitParams2 = ({ paths }) => {
const RegExpRouterWithMatcherExport = class extends import_router2.RegExpRouter {
buildAndExportAllMatchers() {
return this.buildAllMatchers();
}
};
const router = new RegExpRouterWithMatcherExport();
for (const path of paths) {
router.add(import_router.METHOD_NAME_ALL, path, path);
}
const matchers = router.buildAndExportAllMatchers();
const all = matchers[import_router.METHOD_NAME_ALL];
const relocateMap = {};
for (const path of paths) {
if (path === "/*" || path === "*") {
continue;
}
all[1].forEach((list, i) => {
list.forEach(([p, map]) => {
if (p === path) {
if (relocateMap[path]) {
relocateMap[path][0][1] = {
...relocateMap[path][0][1],
...map
};
} else {
relocateMap[path] = [[[], map]];
}
if (relocateMap[path][0][0].findIndex((j) => j === i) === -1) {
relocateMap[path][0][0].push(i);
}
}
});
});
for (const path2 in all[2]) {
all[2][path2][0].forEach(([p]) => {
if (p === path) {
relocateMap[path] ||= [[[]]];
const value = path2 === path ? "" : path2;
if (relocateMap[path][0][0].findIndex((v) => v === value) === -1) {
relocateMap[path][0][0].push(value);
}
}
});
}
}
for (let i = 0, len = all[1].length; i < len; i++) {
all[1][i] = all[1][i] ? [] : 0;
}
for (const path in all[2]) {
all[2][path][0] = [];
}
return [matchers, relocateMap];
};
var serializeInitParams2 = ([matchers, relocateMap]) => {
const matchersStr = JSON.stringify(
matchers,
(_, value) => value instanceof RegExp ? `##${value.toString()}##` : value
).replace(/"##(.+?)##"/g, (_, str) => str.replace(/\\\\/g, "\\"));
const relocateMapStr = JSON.stringify(relocateMap);
return `[${matchersStr},${relocateMapStr}]`;
};
}
});
// node_modules/hono/dist/cjs/router/reg-exp-router/index.js
var require_reg_exp_router = __commonJS({
"node_modules/hono/dist/cjs/router/reg-exp-router/index.js"(exports2, module2) {
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var reg_exp_router_exports = {};
__export(reg_exp_router_exports, {
PreparedRegExpRouter: () => import_prepared_router.PreparedRegExpRouter,
RegExpRouter: () => import_router.RegExpRouter,
buildInitParams: () => import_prepared_router.buildInitParams,
serializeInitParams: () => import_prepared_router.serializeInitParams
});
module2.exports = __toCommonJS(reg_exp_router_exports);
var import_router = require_router2();
var import_prepared_router = require_prepared_router();
}
});
// node_modules/hono/dist/cjs/router/smart-router/router.js
var require_router3 = __commonJS({
"node_modules/hono/dist/cjs/router/smart-router/router.js"(exports2, module2) {
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var router_exports = {};
__export(router_exports, {
SmartRouter: () => SmartRouter2
});
module2.exports = __toCommonJS(router_exports);
var import_router = require_router();
var SmartRouter2 = class {
name = "SmartRouter";
#routers = [];
#routes = [];
constructor(init) {
this.#routers = init.routers;
}
add(method, path, handler) {
if (!this.#routes) {
throw new Error(import_router.MESSAGE_MATCHER_IS_ALREADY_BUILT);
}
this.#routes.push([method, path, handler]);
}
match(method, path) {
if (!this.#routes) {
throw new Error("Fatal error");
}
const routers = this.#routers;
const routes = this.#routes;
const len = routers.length;
let i = 0;
let res;
for (; i < len; i++) {
const router = routers[i];
try {
for (let i2 = 0, len2 = routes.length; i2 < len2; i2++) {
router.add(...routes[i2]);
}
res = router.match(method, path);
} catch (e) {
if (e instanceof import_router.UnsupportedPathError) {
continue;
}
throw e;
}
this.match = router.match.bind(router);
this.#routers = [router];
this.#routes = void 0;
break;
}
if (i === len) {
throw new Error("Fatal error");
}
this.name = `SmartRouter + ${this.activeRouter.name}`;
return res;
}
get activeRouter() {
if (this.#routes || this.#routers.length !== 1) {
throw new Error("No active router has been determined yet.");
}
return this.#routers[0];
}
};
}
});
// node_modules/hono/dist/cjs/router/smart-router/index.js
var require_smart_router = __commonJS({
"node_modules/hono/dist/cjs/router/smart-router/index.js"(exports2, module2) {
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var smart_router_exports = {};
__export(smart_router_exports, {
SmartRouter: () => import_router.SmartRouter
});
module2.exports = __toCommonJS(smart_router_exports);
var import_router = require_router3();
}
});
// node_modules/hono/dist/cjs/router/trie-router/node.js
var require_node2 = __commonJS({
"node_modules/hono/dist/cjs/router/trie-router/node.js"(exports2, module2) {
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var node_exports = {};
__export(node_exports, {
Node: () => Node
});
module2.exports = __toCommonJS(node_exports);
var import_router = require_router();
var import_url = require_url();
var emptyParams = /* @__PURE__ */ Object.create(null);
var hasChildren = (children) => {
for (const _ in children) {
return true;
}
return false;
};
var Node = class _Node {
#methods;
#children;
#patterns;
#order = 0;
#params = emptyParams;
constructor(method, handler, children) {
this.#children = children || /* @__PURE__ */ Object.create(null);
this.#methods = [];
if (method && handler) {
const m = /* @__PURE__ */ Object.create(null);
m[method] = { handler, possibleKeys: [], score: 0 };
this.#methods = [m];
}
this.#patterns = [];
}
insert(method, path, handler) {
this.#order = ++this.#order;
let curNode = this;
const parts = (0, import_url.splitRoutingPath)(path);
const possibleKeys = [];
for (let i = 0, len = parts.length; i < len; i++) {
const p = parts[i];
const nextP = parts[i + 1];
const pattern = (0, import_url.getPattern)(p, nextP);
const key = Array.isArray(pattern) ? pattern[0] : p;
if (key in curNode.#children) {
curNode = curNode.#children[key];
if (pattern) {
possibleKeys.push(pattern[1]);
}
continue;
}
curNode.#children[key] = new _Node();
if (pattern) {
curNode.#patterns.push(pattern);
possibleKeys.push(pattern[1]);
}
curNode = curNode.#children[key];
}
curNode.#methods.push({
[method]: {
handler,
possibleKeys: possibleKeys.filter((v, i, a) => a.indexOf(v) === i),
score: this.#order
}
});
return curNode;
}
#pushHandlerSets(handlerSets, node, method, nodeParams, params) {
for (let i = 0, len = node.#methods.length; i < len; i++) {
const m = node.#methods[i];
const handlerSet = m[method] || m[import_router.METHOD_NAME_ALL];
const processedSet = {};
if (handlerSet !== void 0) {
handlerSet.params = /* @__PURE__ */ Object.create(null);
handlerSets.push(handlerSet);
if (nodeParams !== emptyParams || params && params !== emptyParams) {
for (let i2 = 0, len2 = handlerSet.possibleKeys.length; i2 < len2; i2++) {
const key = handlerSet.possibleKeys[i2];
const processed = processedSet[handlerSet.score];
handlerSet.params[key] = params?.[key] && !processed ? params[key] : nodeParams[key] ?? params?.[key];
processedSet[handlerSet.score] = true;
}
}
}
}
}
search(method, path) {
const handlerSets = [];
this.#params = emptyParams;
const curNode = this;
let curNodes = [curNode];
const parts = (0, import_url.splitPath)(path);
const curNodesQueue = [];
const len = parts.length;
let partOffsets = null;
for (let i = 0; i < len; i++) {
const part = parts[i];
const isLast = i === len - 1;
const tempNodes = [];
for (let j = 0, len2 = curNodes.length; j < len2; j++) {
const node = curNodes[j];
const nextNode = node.#children[part];
if (nextNode) {
nextNode.#params = node.#params;
if (isLast) {
if (nextNode.#children["*"]) {
this.#pushHandlerSets(handlerSets, nextNode.#children["*"], method, node.#params);
}
this.#pushHandlerSets(handlerSets, nextNode, method, node.#params);
} else {
tempNodes.push(nextNode);
}
}
for (let k = 0, len3 = node.#patterns.length; k < len3; k++) {
const pattern = node.#patterns[k];
const params = node.#params === emptyParams ? {} : { ...node.#params };
if (pattern === "*") {
const astNode = node.#children["*"];
if (astNode) {
this.#pushHandlerSets(handlerSets, astNode, method, node.#params);
astNode.#params = params;
tempNodes.push(astNode);
}
continue;
}
const [key, name, matcher] = pattern;
if (!part && !(matcher instanceof RegExp)) {
continue;
}
const child = node.#children[key];
if (matcher instanceof RegExp) {
if (partOffsets === null) {
partOffsets = new Array(len);
let offset = path[0] === "/" ? 1 : 0;
for (let p = 0; p < len; p++) {
partOffsets[p] = offset;
offset += parts[p].length + 1;
}
}
const restPathString = path.substring(partOffsets[i]);
const m = matcher.exec(restPathString);
if (m) {
params[name] = m[0];
this.#pushHandlerSets(handlerSets, child, method, node.#params, params);
if (hasChildren(child.#children)) {
child.#params = params;
const componentCount = m[0].match(/\//)?.length ?? 0;
const targetCurNodes = curNodesQueue[componentCount] ||= [];
targetCurNodes.push(child);
}
continue;
}
}
if (matcher === true || matcher.test(part)) {
params[name] = part;
if (isLast) {
this.#pushHandlerSets(handlerSets, child, method, params, node.#params);
if (child.#children["*"]) {
this.#pushHandlerSets(
handlerSets,
child.#children["*"],
method,
params,
node.#params
);
}
} else {
child.#params = params;
tempNodes.push(child);
}
}
}
}
const shifted = curNodesQueue.shift();
curNodes = shifted ? tempNodes.concat(shifted) : tempNodes;
}
if (handlerSets.length > 1) {
handlerSets.sort((a, b) => {
return a.score - b.score;
});
}
return [handlerSets.map(({ handler, params }) => [handler, params])];
}
};
}
});
// node_modules/hono/dist/cjs/router/trie-router/router.js
var require_router4 = __commonJS({
"node_modules/hono/dist/cjs/router/trie-router/router.js"(exports2, module2) {
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var router_exports = {};
__export(router_exports, {
TrieRouter: () => TrieRouter2
});
module2.exports = __toCommonJS(router_exports);
var import_url = require_url();
var import_node = require_node2();
var TrieRouter2 = class {
name = "TrieRouter";
#node;
constructor() {
this.#node = new import_node.Node();
}
add(method, path, handler) {
const results = (0, import_url.checkOptionalParameter)(path);
if (results) {
for (let i = 0, len = results.length; i < len; i++) {
this.#node.insert(method, results[i], handler);
}
return;
}
this.#node.insert(method, path, handler);
}
match(method, path) {
return this.#node.search(method, path);
}
};
}
});
// node_modules/hono/dist/cjs/router/trie-router/index.js
var require_trie_router = __commonJS({
"node_modules/hono/dist/cjs/router/trie-router/index.js"(exports2, module2) {
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var trie_router_exports = {};
__export(trie_router_exports, {
TrieRouter: () => import_router.TrieRouter
});
module2.exports = __toCommonJS(trie_router_exports);
var import_router = require_router4();
}
});
// node_modules/hono/dist/cjs/hono.js
var require_hono = __commonJS({
"node_modules/hono/dist/cjs/hono.js"(exports2, module2) {
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var hono_exports = {};
__export(hono_exports, {
Hono: () => Hono2
});
module2.exports = __toCommonJS(hono_exports);
var import_hono_base = require_hono_base();
var import_reg_exp_router = require_reg_exp_router();
var import_smart_router = require_smart_router();
var import_trie_router = require_trie_router();
var Hono2 = class extends import_hono_base.HonoBase {
/**
* Creates an instance of the Hono class.
*
* @param options - Optional configuration options for the Hono instance.
*/
constructor(options = {}) {
super(options);
this.router = options.router ?? new import_smart_router.SmartRouter({
routers: [new import_reg_exp_router.RegExpRouter(), new import_trie_router.TrieRouter()]
});
}
};
}
});
// node_modules/hono/dist/cjs/index.js
var require_cjs = __commonJS({
"node_modules/hono/dist/cjs/index.js"(exports2, module2) {
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var index_exports = {};
__export(index_exports, {
Context: () => import_context.Context,
Hono: () => import_hono.Hono
});
module2.exports = __toCommonJS(index_exports);
var import_hono = require_hono();
var import_context = require_context();
}
});
// node_modules/@hono/node-server/dist/index.js
var require_dist = __commonJS({
"node_modules/@hono/node-server/dist/index.js"(exports2, module2) {
"use strict";
var __create2 = Object.create;
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __getProtoOf2 = Object.getPrototypeOf;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toESM2 = (mod, isNodeMode, target) => (target = mod != null ? __create2(__getProtoOf2(mod)) : {}, __copyProps2(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp2(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var src_exports = {};
__export(src_exports, {
RequestError: () => RequestError,
createAdaptorServer: () => createAdaptorServer,
getRequestListener: () => getRequestListener,
serve: () => serve
});
module2.exports = __toCommonJS(src_exports);
var import_node_http = require("http");
var import_node_http22 = require("http2");
var import_node_http2 = require("http2");
var import_node_stream = require("stream");
var RequestError = class extends Error {
constructor(message, options) {
super(message, options);
this.name = "RequestError";
}
};
var toRequestError = (e) => {
if (e instanceof RequestError) {
return e;
}
return new RequestError(e.message, { cause: e });
};
var GlobalRequest = global.Request;
var Request2 = class extends GlobalRequest {
constructor(input, options) {
if (typeof input === "object" && getRequestCache in input) {
input = input[getRequestCache]();
}
if (typeof options?.body?.getReader !== "undefined") {
;
options.duplex ??= "half";
}
super(input, options);
}
};
var newHeadersFromIncoming = (incoming) => {
const headerRecord = [];
const rawHeaders = incoming.rawHeaders;
for (let i = 0; i < rawHeaders.length; i += 2) {
const { [i]: key, [i + 1]: value } = rawHeaders;
if (key.charCodeAt(0) !== /*:*/
58) {
headerRecord.push([key, value]);
}
}
return new Headers(headerRecord);
};
var wrapBodyStream = Symbol("wrapBodyStream");
var newRequestFromIncoming = (method, url, headers, incoming, abortController) => {
const init = {
method,
headers,
signal: abortController.signal
};
if (method === "TRACE") {
init.method = "GET";
const req = new Request2(url, init);
Object.defineProperty(req, "method", {
get() {
return "TRACE";
}
});
return req;
}
if (!(method === "GET" || method === "HEAD")) {
if ("rawBody" in incoming && incoming.rawBody instanceof Buffer) {
init.body = new ReadableStream({
start(controller) {
controller.enqueue(incoming.rawBody);
controller.close();
}
});
} else if (incoming[wrapBodyStream]) {
let reader;
init.body = new ReadableStream({
async pull(controller) {
try {
reader ||= import_node_stream.Readable.toWeb(incoming).getReader();
const { done, value } = await reader.read();
if (done) {
controller.close();
} else {
controller.enqueue(value);
}
} catch (error) {
controller.error(error);
}
}
});
} else {
init.body = import_node_stream.Readable.toWeb(incoming);
}
}
return new Request2(url, init);
};
var getRequestCache = Symbol("getRequestCache");
var requestCache = Symbol("requestCache");
var incomingKey = Symbol("incomingKey");
var urlKey = Symbol("urlKey");
var headersKey = Symbol("headersKey");
var abortControllerKey = Symbol("abortControllerKey");
var getAbortController = Symbol("getAbortController");
var requestPrototype = {
get method() {
return this[incomingKey].method || "GET";
},
get url() {
return this[urlKey];
},
get headers() {
return this[headersKey] ||= newHeadersFromIncoming(this[incomingKey]);
},
[getAbortController]() {
this[getRequestCache]();
return this[abortControllerKey];
},
[getRequestCache]() {
this[abortControllerKey] ||= new AbortController();
return this[requestCache] ||= newRequestFromIncoming(
this.method,
this[urlKey],
this.headers,
this[incomingKey],
this[abortControllerKey]
);
}
};
[
"body",
"bodyUsed",
"cache",
"credentials",
"destination",
"integrity",
"mode",
"redirect",
"referrer",
"referrerPolicy",
"signal",
"keepalive"
].forEach((k) => {
Object.defineProperty(requestPrototype, k, {
get() {
return this[getRequestCache]()[k];
}
});
});
["arrayBuffer", "blob", "clone", "formData", "json", "text"].forEach((k) => {
Object.defineProperty(requestPrototype, k, {
value: function() {
return this[getRequestCache]()[k]();
}
});
});
Object.defineProperty(requestPrototype, Symbol.for("nodejs.util.inspect.custom"), {
value: function(depth, options, inspectFn) {
const props = {
method: this.method,
url: this.url,
headers: this.headers,
nativeRequest: this[requestCache]
};
return `Request (lightweight) ${inspectFn(props, { ...options, depth: depth == null ? null : depth - 1 })}`;
}
});
Object.setPrototypeOf(requestPrototype, Request2.prototype);
var newRequest = (incoming, defaultHostname) => {
const req = Object.create(requestPrototype);
req[incomingKey] = incoming;
const incomingUrl = incoming.url || "";
if (incomingUrl[0] !== "/" && // short-circuit for performance. most requests are relative URL.
(incomingUrl.startsWith("http://") || incomingUrl.startsWith("https://"))) {
if (incoming instanceof import_node_http2.Http2ServerRequest) {
throw new RequestError("Absolute URL for :path is not allowed in HTTP/2");
}
try {
const url2 = new URL(incomingUrl);
req[urlKey] = url2.href;
} catch (e) {
throw new RequestError("Invalid absolute URL", { cause: e });
}
return req;
}
const host = (incoming instanceof import_node_http2.Http2ServerRequest ? incoming.authority : incoming.headers.host) || defaultHostname;
if (!host) {
throw new RequestError("Missing host header");
}
let scheme;
if (incoming instanceof import_node_http2.Http2ServerRequest) {
scheme = incoming.scheme;
if (!(scheme === "http" || scheme === "https")) {
throw new RequestError("Unsupported scheme");
}
} else {
scheme = incoming.socket && incoming.socket.encrypted ? "https" : "http";
}
const url = new URL(`${scheme}://${host}${incomingUrl}`);
if (url.hostname.length !== host.length && url.hostname !== host.replace(/:\d+$/, "")) {
throw new RequestError("Invalid host header");
}
req[urlKey] = url.href;
return req;
};
var responseCache = Symbol("responseCache");
var getResponseCache = Symbol("getResponseCache");
var cacheKey = Symbol("cache");
var GlobalResponse = global.Response;
var Response2 = class _Response {
#body;
#init;
[getResponseCache]() {
delete this[cacheKey];
return this[responseCache] ||= new GlobalResponse(this.#body, this.#init);
}
constructor(body, init) {
let headers;
this.#body = body;
if (init instanceof _Response) {
const cachedGlobalResponse = init[responseCache];
if (cachedGlobalResponse) {
this.#init = cachedGlobalResponse;
this[getResponseCache]();
return;
} else {
this.#init = init.#init;
headers = new Headers(init.#init.headers);
}
} else {
this.#init = init;
}
if (typeof body === "string" || typeof body?.getReader !== "undefined" || body instanceof Blob || body instanceof Uint8Array) {
;
this[cacheKey] = [init?.status || 200, body, headers || init?.headers];
}
}
get headers() {
const cache = this[cacheKey];
if (cache) {
if (!(cache[2] instanceof Headers)) {
cache[2] = new Headers(
cache[2] || { "content-type": "text/plain; charset=UTF-8" }
);
}
return cache[2];
}
return this[getResponseCache]().headers;
}
get status() {
return this[cacheKey]?.[0] ?? this[getResponseCache]().status;
}
get ok() {
const status = this.status;
return status >= 200 && status < 300;
}
};
["body", "bodyUsed", "redirected", "statusText", "trailers", "type", "url"].forEach((k) => {
Object.defineProperty(Response2.prototype, k, {
get() {
return this[getResponseCache]()[k];
}
});
});
["arrayBuffer", "blob", "clone", "formData", "json", "text"].forEach((k) => {
Object.defineProperty(Response2.prototype, k, {
value: function() {
return this[getResponseCache]()[k]();
}
});
});
Object.defineProperty(Response2.prototype, Symbol.for("nodejs.util.inspect.custom"), {
value: function(depth, options, inspectFn) {
const props = {
status: this.status,
headers: this.headers,
ok: this.ok,
nativeResponse: this[responseCache]
};
return `Response (lightweight) ${inspectFn(props, { ...options, depth: depth == null ? null : depth - 1 })}`;
}
});
Object.setPrototypeOf(Response2, GlobalResponse);
Object.setPrototypeOf(Response2.prototype, GlobalResponse.prototype);
async function readWithoutBlocking(readPromise) {
return Promise.race([readPromise, Promise.resolve().then(() => Promise.resolve(void 0))]);
}
function writeFromReadableStreamDefaultReader(reader, writable, currentReadPromise) {
const cancel = (error) => {
reader.cancel(error).catch(() => {
});
};
writable.on("close", cancel);
writable.on("error", cancel);
(currentReadPromise ?? reader.read()).then(flow, handleStreamError);
return reader.closed.finally(() => {
writable.off("close", cancel);
writable.off("error", cancel);
});
function handleStreamError(error) {
if (error) {
writable.destroy(error);
}
}
function onDrain() {
reader.read().then(flow, handleStreamError);
}
function flow({ done, value }) {
try {
if (done) {
writable.end();
} else if (!writable.write(value)) {
writable.once("drain", onDrain);
} else {
return reader.read().then(flow, handleStreamError);
}
} catch (e) {
handleStreamError(e);
}
}
}
function writeFromReadableStream(stream, writable) {
if (stream.locked) {
throw new TypeError("ReadableStream is locked.");
} else if (writable.destroyed) {
return;
}
return writeFromReadableStreamDefaultReader(stream.getReader(), writable);
}
var buildOutgoingHttpHeaders = (headers) => {
const res = {};
if (!(headers instanceof Headers)) {
headers = new Headers(headers ?? void 0);
}
const cookies = [];
for (const [k, v] of headers) {
if (k === "set-cookie") {
cookies.push(v);
} else {
res[k] = v;
}
}
if (cookies.length > 0) {
res["set-cookie"] = cookies;
}
res["content-type"] ??= "text/plain; charset=UTF-8";
return res;
};
var X_ALREADY_SENT = "x-hono-already-sent";
var import_node_crypto = __toESM2(require("crypto"));
if (typeof global.crypto === "undefined") {
global.crypto = import_node_crypto.default;
}
var outgoingEnded = Symbol("outgoingEnded");
var incomingDraining = Symbol("incomingDraining");
var DRAIN_TIMEOUT_MS = 500;
var MAX_DRAIN_BYTES = 64 * 1024 * 1024;
var drainIncoming = (incoming) => {
const incomingWithDrainState = incoming;
if (incoming.destroyed || incomingWithDrainState[incomingDraining]) {
return;
}
incomingWithDrainState[incomingDraining] = true;
if (incoming instanceof import_node_http22.Http2ServerRequest) {
try {
;
incoming.stream?.close?.(import_node_http22.constants.NGHTTP2_NO_ERROR);
} catch {
}
return;
}
let bytesRead = 0;
const cleanup = () => {
clearTimeout(timer);
incoming.off("data", onData);
incoming.off("end", cleanup);
incoming.off("error", cleanup);
};
const forceClose = () => {
cleanup();
const socket = incoming.socket;
if (socket && !socket.destroyed) {
socket.destroySoon();
}
};
const timer = setTimeout(forceClose, DRAIN_TIMEOUT_MS);
timer.unref?.();
const onData = (chunk) => {
bytesRead += chunk.length;
if (bytesRead > MAX_DRAIN_BYTES) {
forceClose();
}
};
incoming.on("data", onData);
incoming.on("end", cleanup);
incoming.on("error", cleanup);
incoming.resume();
};
var handleRequestError = () => new Response(null, {
status: 400
});
var handleFetchError = (e) => new Response(null, {
status: e instanceof Error && (e.name === "TimeoutError" || e.constructor.name === "TimeoutError") ? 504 : 500
});
var handleResponseError = (e, outgoing) => {
const err = e instanceof Error ? e : new Error("unknown error", { cause: e });
if (err.code === "ERR_STREAM_PREMATURE_CLOSE") {
console.info("The user aborted a request.");
} else {
console.error(e);
if (!outgoing.headersSent) {
outgoing.writeHead(500, { "Content-Type": "text/plain" });
}
outgoing.end(`Error: ${err.message}`);
outgoing.destroy(err);
}
};
var flushHeaders = (outgoing) => {
if ("flushHeaders" in outgoing && outgoing.writable) {
outgoing.flushHeaders();
}
};
var responseViaCache = async (res, outgoing) => {
let [status, body, header] = res[cacheKey];
let hasContentLength = false;
if (!header) {
header = { "content-type": "text/plain; charset=UTF-8" };
} else if (header instanceof Headers) {
hasContentLength = header.has("content-length");
header = buildOutgoingHttpHeaders(header);
} else if (Array.isArray(header)) {
const headerObj = new Headers(header);
hasContentLength = headerObj.has("content-length");
header = buildOutgoingHttpHeaders(headerObj);
} else {
for (const key in header) {
if (key.length === 14 && key.toLowerCase() === "content-length") {
hasContentLength = true;
break;
}
}
}
if (!hasContentLength) {
if (typeof body === "string") {
header["Content-Length"] = Buffer.byteLength(body);
} else if (body instanceof Uint8Array) {
header["Content-Length"] = body.byteLength;
} else if (body instanceof Blob) {
header["Content-Length"] = body.size;
}
}
outgoing.writeHead(status, header);
if (typeof body === "string" || body instanceof Uint8Array) {
outgoing.end(body);
} else if (body instanceof Blob) {
outgoing.end(new Uint8Array(await body.arrayBuffer()));
} else {
flushHeaders(outgoing);
await writeFromReadableStream(body, outgoing)?.catch(
(e) => handleResponseError(e, outgoing)
);
}
;
outgoing[outgoingEnded]?.();
};
var isPromise = (res) => typeof res.then === "function";
var responseViaResponseObject = async (res, outgoing, options = {}) => {
if (isPromise(res)) {
if (options.errorHandler) {
try {
res = await res;
} catch (err) {
const errRes = await options.errorHandler(err);
if (!errRes) {
return;
}
res = errRes;
}
} else {
res = await res.catch(handleFetchError);
}
}
if (cacheKey in res) {
return responseViaCache(res, outgoing);
}
const resHeaderRecord = buildOutgoingHttpHeaders(res.headers);
if (res.body) {
const reader = res.body.getReader();
const values = [];
let done = false;
let currentReadPromise = void 0;
if (resHeaderRecord["transfer-encoding"] !== "chunked") {
let maxReadCount = 2;
for (let i = 0; i < maxReadCount; i++) {
currentReadPromise ||= reader.read();
const chunk = await readWithoutBlocking(currentReadPromise).catch((e) => {
console.error(e);
done = true;
});
if (!chunk) {
if (i === 1) {
await new Promise((resolve) => setTimeout(resolve));
maxReadCount = 3;
continue;
}
break;
}
currentReadPromise = void 0;
if (chunk.value) {
values.push(chunk.value);
}
if (chunk.done) {
done = true;
break;
}
}
if (done && !("content-length" in resHeaderRecord)) {
resHeaderRecord["content-length"] = values.reduce((acc, value) => acc + value.length, 0);
}
}
outgoing.writeHead(res.status, resHeaderRecord);
values.forEach((value) => {
;
outgoing.write(value);
});
if (done) {
outgoing.end();
} else {
if (values.length === 0) {
flushHeaders(outgoing);
}
await writeFromReadableStreamDefaultReader(reader, outgoing, currentReadPromise);
}
} else if (resHeaderRecord[X_ALREADY_SENT]) {
} else {
outgoing.writeHead(res.status, resHeaderRecord);
outgoing.end();
}
;
outgoing[outgoingEnded]?.();
};
var getRequestListener = (fetchCallback, options = {}) => {
const autoCleanupIncoming = options.autoCleanupIncoming ?? true;
if (options.overrideGlobalObjects !== false && global.Request !== Request2) {
Object.defineProperty(global, "Request", {
value: Request2
});
Object.defineProperty(global, "Response", {
value: Response2
});
}
return async (incoming, outgoing) => {
let res, req;
try {
req = newRequest(incoming, options.hostname);
let incomingEnded = !autoCleanupIncoming || incoming.method === "GET" || incoming.method === "HEAD";
if (!incomingEnded) {
;
incoming[wrapBodyStream] = true;
incoming.on("end", () => {
incomingEnded = true;
});
if (incoming instanceof import_node_http22.Http2ServerRequest) {
;
outgoing[outgoingEnded] = () => {
if (!incomingEnded) {
setTimeout(() => {
if (!incomingEnded) {
setTimeout(() => {
drainIncoming(incoming);
});
}
});
}
};
}
outgoing.on("finish", () => {
if (!incomingEnded) {
drainIncoming(incoming);
}
});
}
outgoing.on("close", () => {
const abortController = req[abortControllerKey];
if (abortController) {
if (incoming.errored) {
req[abortControllerKey].abort(incoming.errored.toString());
} else if (!outgoing.writableFinished) {
req[abortControllerKey].abort("Client connection prematurely closed.");
}
}
if (!incomingEnded) {
setTimeout(() => {
if (!incomingEnded) {
setTimeout(() => {
drainIncoming(incoming);
});
}
});
}
});
res = fetchCallback(req, { incoming, outgoing });
if (cacheKey in res) {
return responseViaCache(res, outgoing);
}
} catch (e) {
if (!res) {
if (options.errorHandler) {
res = await options.errorHandler(req ? e : toRequestError(e));
if (!res) {
return;
}
} else if (!req) {
res = handleRequestError();
} else {
res = handleFetchError(e);
}
} else {
return handleResponseError(e, outgoing);
}
}
try {
return await responseViaResponseObject(res, outgoing, options);
} catch (e) {
return handleResponseError(e, outgoing);
}
};
};
var createAdaptorServer = (options) => {
const fetchCallback = options.fetch;
const requestListener = getRequestListener(fetchCallback, {
hostname: options.hostname,
overrideGlobalObjects: options.overrideGlobalObjects,
autoCleanupIncoming: options.autoCleanupIncoming
});
const createServer = options.createServer || import_node_http.createServer;
const server = createServer(options.serverOptions || {}, requestListener);
return server;
};
var serve = (options, listeningListener) => {
const server = createAdaptorServer(options);
server.listen(options?.port ?? 3e3, options.hostname, () => {
const serverInfo = server.address();
listeningListener && listeningListener(serverInfo);
});
return server;
};
}
});
// node_modules/@emprespresso/pengueno/dist/server/hono/proxy.js
var require_proxy = __commonJS({
"node_modules/@emprespresso/pengueno/dist/server/hono/proxy.js"(exports2) {
"use strict";
var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
o[k2] = m[k];
});
var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
} : function(o, v) {
o["default"] = v;
});
var __importStar = exports2 && exports2.__importStar || /* @__PURE__ */ function() {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function(o2) {
var ar = [];
for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function(mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) {
for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
}
__setModuleDefault(result, mod);
return result;
};
}();
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.HonoProxy = void 0;
var pengueno_1 = require_dist2();
var AppLifetimeMetric = pengueno_1.Metric.fromName("HonoAppLifetime").asResult();
var AppRequestMetric = pengueno_1.Metric.fromName("HonoAppRequest");
var HonoProxy = class {
server;
app;
constructor(server) {
this.server = server;
}
async initializeApp() {
if (this.app)
return this.app;
const { Hono: Hono2 } = await Promise.resolve().then(() => __importStar(require_cjs()));
this.app = pengueno_1.LogMetricTraceable.of(new Hono2()).flatMap(pengueno_1.TraceUtil.withTrace(`AppId = ${crypto.randomUUID()}`)).flatMap(pengueno_1.TraceUtil.withMetricTrace(AppLifetimeMetric));
return this.app;
}
async serve(port, hostname) {
const { serve } = await Promise.resolve().then(() => __importStar(require_dist()));
const app = await this.initializeApp();
return app.map((tApp) => pengueno_1.Either.fromFailable(() => {
const app2 = tApp.get();
app2.all("*", async (c) => tApp.flatMap(pengueno_1.TraceUtil.withMetricTrace(AppRequestMetric)).move(c.req).flatMap((tRequest) => pengueno_1.PenguenoRequest.from(tRequest)).map((req) => this.server.serve(req)).map(pengueno_1.TraceUtil.promiseify((tResponse) => {
tResponse.trace.trace(AppRequestMetric.count.withValue(1));
return new Response(tResponse.get().body(), tResponse.get());
})).get());
return serve({
fetch: (_r) => app2.fetch(_r),
port,
hostname
});
})).peek(pengueno_1.TraceUtil.traceResultingEither()).peek((tServe) => tServe.get().mapRight(() => tServe.trace.trace(`haii im still listening at http://${hostname}:${port} ~uwu dont think i forgot`))).map((tEitherServer) => tEitherServer.get().mapRight((server) => tEitherServer.move(server)).flatMapAsync((tServer) => pengueno_1.Signals.awaitClose(tServer))).peek(pengueno_1.TraceUtil.promiseify(pengueno_1.TraceUtil.traceResultingEither(AppLifetimeMetric))).get();
}
};
exports2.HonoProxy = HonoProxy;
}
});
// node_modules/@emprespresso/pengueno/dist/server/hono/index.js
var require_hono2 = __commonJS({
"node_modules/@emprespresso/pengueno/dist/server/hono/index.js"(exports2) {
"use strict";
var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
o[k2] = m[k];
});
var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
};
Object.defineProperty(exports2, "__esModule", { value: true });
__exportStar(require_proxy(), exports2);
}
});
// node_modules/@emprespresso/pengueno/dist/server/index.js
var require_server = __commonJS({
"node_modules/@emprespresso/pengueno/dist/server/index.js"(exports2) {
"use strict";
var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
o[k2] = m[k];
});
var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
};
Object.defineProperty(exports2, "__esModule", { value: true });
__exportStar(require_http(), exports2);
__exportStar(require_response(), exports2);
__exportStar(require_request(), exports2);
__exportStar(require_activity(), exports2);
__exportStar(require_filter(), exports2);
__exportStar(require_hono2(), exports2);
}
});
// node_modules/@emprespresso/pengueno/dist/index.js
var require_dist2 = __commonJS({
"node_modules/@emprespresso/pengueno/dist/index.js"(exports2) {
"use strict";
var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
o[k2] = m[k];
});
var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
};
Object.defineProperty(exports2, "__esModule", { value: true });
__exportStar(require_leftpadesque(), exports2);
__exportStar(require_types(), exports2);
__exportStar(require_trace4(), exports2);
__exportStar(require_process(), exports2);
__exportStar(require_server(), exports2);
}
});
// node_modules/@emprespresso/ci_model/dist/job/index.js
var import_pengueno = __toESM(require_dist2(), 1);
var JobTypes = [
"fetch_code",
"ci_pipeline",
"build_docker_image.js",
"ansible_playbook.js",
"checkout_ci.js",
"npm_publish.js",
"coolify_webhook.js"
];
var isJobType = (j) => typeof j === "string" && JobTypes.includes(j);
var isJob = (j) => !!((0, import_pengueno.isObject)(j) && "arguments" in j && (0, import_pengueno.isObject)(j.arguments) && "type" in j && isJobType(j.type) && j);
// node_modules/@emprespresso/ci_model/dist/pipeline/index.js
var import_pengueno3 = __toESM(require_dist2(), 1);
// node_modules/@emprespresso/ci_model/dist/pipeline/builder.js
var BasePipelineBuilder = class {
stages = [];
addStage(stage) {
this.stages.push(stage);
return this;
}
build() {
return new PipelineImpl(this.stages);
}
};
var DefaultGitHookPipelineBuilder = class extends BasePipelineBuilder {
remoteUrl;
refname;
constructor(remoteUrl = process.env.remote, rev = process.env.rev, refname = process.env.refname) {
super();
this.remoteUrl = remoteUrl;
this.refname = refname;
this.addStage({
parallelJobs: [
{
type: "fetch_code",
arguments: {
remoteUrl,
checkout: rev,
path: this.getSourceDestination()
}
}
]
});
}
getSourceDestination() {
return this.remoteUrl.replace(".git", "").split("/").at(-1) ?? "src";
}
getBranch() {
const branchRefPrefix = "refs/heads/";
return this.refname.split(branchRefPrefix).at(1);
}
};
// node_modules/@emprespresso/ci_model/dist/pipeline/impl.js
var import_pengueno2 = __toESM(require_dist2(), 1);
var PipelineImpl = class _PipelineImpl {
serialJobs;
constructor(serialJobs) {
this.serialJobs = serialJobs;
}
serialize() {
return JSON.stringify({ serialJobs: this.serialJobs });
}
static from(s) {
return import_pengueno2.Either.fromFailable(() => JSON.parse(s)).flatMap((eitherPipelineJson) => isPipeline(eitherPipelineJson) ? import_pengueno2.Either.right(eitherPipelineJson) : import_pengueno2.Either.left(new Error("oh noes D: its a bad pipewine :(("))).mapRight((pipeline) => new _PipelineImpl(pipeline.serialJobs));
}
};
// node_modules/@emprespresso/ci_model/dist/pipeline/index.js
var isPipelineStage = (t) => (0, import_pengueno3.isObject)(t) && "parallelJobs" in t && Array.isArray(t.parallelJobs) && t.parallelJobs.every((j) => isJob(j));
var isPipeline = (t) => (0, import_pengueno3.isObject)(t) && "serialJobs" in t && Array.isArray(t.serialJobs) && t.serialJobs.every((p) => isPipelineStage(p));
// dist/ci.js
var __assign = exports && exports.__assign || function() {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var REGISTRY = "img.liz.coffee";
var NAMESPACE = "emprespresso";
var IMG = "ansicolor";
var getPipeline = function() {
var gitHookPipeline = new DefaultGitHookPipelineBuilder();
var branch = gitHookPipeline.getBranch();
if (!branch)
return gitHookPipeline.build();
var commonBuildArgs = {
context: gitHookPipeline.getSourceDestination(),
registry: REGISTRY,
namespace: NAMESPACE,
imageTag: branch
};
var build = {
type: "build_docker_image.js",
arguments: __assign(__assign({}, commonBuildArgs), { repository: IMG, buildTarget: "ansicolor", dockerfile: "Dockerfile" })
};
gitHookPipeline.addStage({
parallelJobs: [build]
});
var isRelease = branch === "release";
if (!isRelease) {
return gitHookPipeline.build();
}
var deploy = {
type: "coolify_webhook.js",
arguments: {
webhookUrl: "https://plane.liz.coffee/api/v1/deploy?uuid=ia1v2kqy9199dbfpe3bqok78&force=false"
}
};
gitHookPipeline.addStage({ parallelJobs: [deploy] });
return gitHookPipeline.build();
};
var main = function() {
var data = getPipeline().serialize();
process.stdout.write(data);
};
main();