@@ -2218,7 +2218,7 @@ var require_lib = __commonJS((exports, module) => {
22182218var require_package = __commonJS((exports, module) => {
22192219 module.exports = {
22202220 name: "moodle-openapi-server",
2221- version: "1.0.3 ",
2221+ version: "1.0.6 ",
22222222 description: "Moddle OpenAPI server",
22232223 private: true,
22242224 type: "module",
@@ -2227,17 +2227,19 @@ var require_package = __commonJS((exports, module) => {
22272227 },
22282228 files: ["dist"],
22292229 scripts: {
2230- build: "tsgo && ts-add-js-extension --dir=dist",
2230+ build: "tsgo && ts-add-js-extension --dir=dist && cp package.json dist/package.json ",
22312231 bundle: "bun build src/server.ts --outfile=dist/server.bundle.js",
22322232 "build:binary": "bun build src/server.ts --compile --outfile=dist/server",
22332233 "build:docker": "docker build --build-arg GITHUB_TOKEN=${GITHUB_TOKEN} -t moodle-openapi-server .",
22342234 typecheck: "tsgo --noEmit",
2235+ test: "bun test",
22352236 dev: "bun --watch src/server.ts",
22362237 "dev:mcp": "bun --watch src/index.ts",
22372238 "dev:all": 'concurrently "pnpm dev" "pnpm dev:mcp"',
22382239 "start:all": 'concurrently "bun dist/src/server.js" "bun dist/src/index.js"',
22392240 start: "bun dist/server.bundle.js",
2240- inspect: "fastmcp inspect src/index.ts"
2241+ inspect: "fastmcp inspect src/index.ts",
2242+ prepare: "husky"
22412243 },
22422244 peerDependencies: {
22432245 "@toptiertools/moodle-client": "^1.0.8",
@@ -2263,6 +2265,7 @@ var require_package = __commonJS((exports, module) => {
22632265 "@typescript/native-preview": "7.0.0-dev.20250606.1",
22642266 "api-spec-converter": "^2.12.0",
22652267 esbuild: "^0.25.5",
2268+ husky: "^9.1.7",
22662269 "openapi-types": "^12.1.3",
22672270 "ts-add-js-extension": "^1.6.6",
22682271 tsx: "^4.19.4",
@@ -311512,6 +311515,16 @@ var html = (strings, ...values) => {
311512311515 return buffer.length === 1 ? "callbacks" in buffer ? raw(resolveCallbackSync(raw(buffer[0], buffer.callbacks))) : raw(buffer[0]) : stringBufferToString(buffer, buffer.callbacks);
311513311516};
311514311517
311518+ // src/get-domain-url.ts
311519+ function getDomainUrl(request, options) {
311520+ const host = request.headers.get("X-Forwarded-Host") ?? request.headers.get("Host") ?? options?.defaultHost;
311521+ if (!host) {
311522+ throw new Error("Host is required");
311523+ }
311524+ const protocol = options?.protocol ?? (host.includes("localhost") ? "http" : "https");
311525+ return `${protocol}://${host}`;
311526+ }
311527+
311515311528// src/server.ts
311516311529var baseURL = process.env.MOODLE_BASE_URL;
311517311530if (!baseURL) {
@@ -311539,6 +311552,13 @@ var moodleAuth = async (c, next) => {
311539311552var app = new Hono2;
311540311553app.use(cors());
311541311554app.use(logger());
311555+ app.use(async (c, next) => {
311556+ const domainUrl = getDomainUrl(c.req.raw, {
311557+ defaultHost: "localhost:3000"
311558+ });
311559+ c.set("domainUrl", domainUrl);
311560+ await next();
311561+ });
311542311562app.use("/api/*", moodleAuth);
311543311563app.post("/api/usecases/:function", async (c) => {
311544311564 const functionName = c.req.param("function");
@@ -311610,21 +311630,31 @@ app.get("/meta", async (c) => {
311610311630});
311611311631app.get("/docs/swagger/:id", (c) => {
311612311632 const id = c.req.param("id");
311633+ const domainUrl = c.get("domainUrl");
311613311634 const swaggerDocs = swagger2.filter(Boolean);
311614311635 const doc = swaggerDocs[Number(id)];
311615311636 if (!doc) {
311616311637 return c.json({ error: true, message: "Invalid id" }, { status: 400 });
311617311638 }
311639+ console.log(domainUrl);
311640+ doc.host = domainUrl;
311618311641 return c.json(doc, { status: 200 });
311619311642});
311620311643app.get("/docs/openapi_3_1/:id{.+\\.json}", (c) => {
311621311644 const id = c.req.param("id");
311645+ const domainUrl = c.get("domainUrl");
311622311646 const idWithoutJson = id.replace(".json", "");
311623311647 const openapi31Docs = [openapi31, usecaseOpenapi].filter(Boolean);
311624311648 const doc = openapi31Docs[Number(idWithoutJson)];
311625311649 if (!doc) {
311626311650 return c.json({ error: true, message: "Invalid id" }, { status: 400 });
311627311651 }
311652+ doc.servers = [
311653+ {
311654+ url: `${domainUrl}/api`,
311655+ description: "Moodle webservice API"
311656+ }
311657+ ];
311628311658 return c.json(doc, { status: 200 });
311629311659});
311630311660app.get("/docs/openapi_3_1/:id", (c) => {
0 commit comments