From 5a0a2de0f053dc1e4b89d451623692e1355ab168 Mon Sep 17 00:00:00 2001 From: Jan Andrle Date: Fri, 12 Jun 2026 13:45:24 +0200 Subject: [PATCH] :bug: :zap: Fixes API development --- package-lock.json | 127 +++++++++++++++++++++++++++++++++++++++ package.json | 1 + src/api/fetchAPI.ts | 9 +-- web-dev-server.config.js | 14 +++++ 4 files changed, 145 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index d7c032b..63c4969 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,7 @@ "@web/test-runner": "~0.20", "babel-plugin-template-html-minifier": "~4.1", "deepmerge": "~4.3", + "koa-proxies": "^0.12.4", "rollup": "~4.61", "rollup-plugin-esbuild": "~6.2", "rollup-plugin-workbox": "~8.1", @@ -6034,6 +6035,13 @@ "node": ">= 0.6" } }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true, + "license": "MIT" + }, "node_modules/events-universal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", @@ -6246,6 +6254,27 @@ "node": ">=6" } }, + "node_modules/follow-redirects": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/for-each": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", @@ -6786,6 +6815,21 @@ "node": ">= 0.6" } }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", @@ -7690,6 +7734,21 @@ "etag": "^1.8.1" } }, + "node_modules/koa-proxies": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/koa-proxies/-/koa-proxies-0.12.4.tgz", + "integrity": "sha512-xxrEtN0e7s7/gNRoOMUltCbuIaCWqTQUTZNWQqet/8MoxSW0hG422lx2Al9FfYO3nCeA+b5c5/YmILRzavivDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "http-proxy": "^1.18.1", + "path-match": "^1.2.4", + "uuid": "^8.3.2" + }, + "peerDependencies": { + "koa": ">=2" + } + }, "node_modules/koa-send": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz", @@ -8779,6 +8838,39 @@ "node": ">=8" } }, + "node_modules/path-match": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/path-match/-/path-match-1.2.4.tgz", + "integrity": "sha512-UWlehEdqu36jmh4h5CWJ7tARp1OEVKGHKm6+dg9qMq5RKUTV5WJrGgaZ3dN2m7WFAXDbjlHzvJvL/IUpy84Ktw==", + "deprecated": "This package is archived and no longer maintained. For support, visit https://github.com/expressjs/express/discussions", + "dev": true, + "license": "MIT", + "dependencies": { + "http-errors": "~1.4.0", + "path-to-regexp": "^1.0.0" + } + }, + "node_modules/path-match/node_modules/http-errors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.4.0.tgz", + "integrity": "sha512-oLjPqve1tuOl5aRhv8GK5eHpqP1C9fb+Ol+XTLjKfLltE44zdDbEdjPSbU7Ch5rSNsVFqZn97SrMmZLdu1/YMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "2.0.1", + "statuses": ">= 1.2.1 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/path-match/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", + "dev": true, + "license": "ISC" + }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -8810,6 +8902,23 @@ "dev": true, "license": "ISC" }, + "node_modules/path-to-regexp": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/path-to-regexp/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true, + "license": "MIT" + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -9275,6 +9384,13 @@ "node": ">=0.10.0" } }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "license": "MIT" + }, "node_modules/resolve": { "version": "1.22.11", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", @@ -10730,6 +10846,17 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/v8-to-istanbul": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", diff --git a/package.json b/package.json index 6f34892..fbede32 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "@web/test-runner": "~0.20", "babel-plugin-template-html-minifier": "~4.1", "deepmerge": "~4.3", + "koa-proxies": "^0.12.4", "rollup": "~4.61", "rollup-plugin-esbuild": "~6.2", "rollup-plugin-workbox": "~8.1", diff --git a/src/api/fetchAPI.ts b/src/api/fetchAPI.ts index 9d50f9e..a983dc0 100644 --- a/src/api/fetchAPI.ts +++ b/src/api/fetchAPI.ts @@ -1,8 +1,6 @@ -const url_server = "https://rss.jaandrle.cz"; +const url_server = ""; const url_base = `${url_server}/rest`; -// @ts-expect-error S7016 -import { users } from "ENV"; -const [ username, password ] = users[0].split(':'); +const [ username, password ] = ":".split(':'); /** * Generates the Basic Authentication header. @@ -32,7 +30,6 @@ export async function fetchAPI(endpoint: string, options: RequestInit = {}): Pro Authorization: auth, Accept: "application/json", ...headers, - }, - mode: "no-cors", + } }); } diff --git a/web-dev-server.config.js b/web-dev-server.config.js index 73fc08c..07b048d 100644 --- a/web-dev-server.config.js +++ b/web-dev-server.config.js @@ -17,7 +17,21 @@ const target = mode !== "dist" // OR "src" appIndex: pathDist("index.html"), }; +import proxy from "koa-proxies"; +import { users } from "./.env.js"; +const middleware = [ + proxy("/rest", { + target: "https://rss.jaandrle.cz", + headers: { + Authorization: "Basic " + Buffer.from(users[0]).toString("base64"), + }, + logs: true, + changeOrigin: true, + }), +]; + export default /** @type {import("@web/dev-server").DevServerConfig} */ ({ + middleware, open: "/", // SPA routing nodeResolve: { // Resolve bare module imports exportConditions: ["browser", "development"],