From 90f6ae7695a1f76306053a9ee6d18cb6746798ca Mon Sep 17 00:00:00 2001 From: soraefir Date: Sun, 23 Feb 2025 15:20:34 +0100 Subject: [PATCH] Migrate to esbuild & ts --- .gitignore | 6 +- package.json | 56 +++--- public/js/.DS_Store | Bin 6148 -> 0 bytes src/api.ts | 122 ++++++++++++ src/app.ts | 13 ++ public/js/main.js => src/old.js | 185 ++---------------- src/types/ext.ts | 79 ++++++++ template/module/foot.pug | 18 +- tsconfig.json | 12 ++ yarn.lock | 319 ++++++++++++++++++++++++++++++-- 10 files changed, 590 insertions(+), 220 deletions(-) delete mode 100644 public/js/.DS_Store create mode 100644 src/api.ts create mode 100644 src/app.ts rename public/js/main.js => src/old.js (68%) create mode 100644 src/types/ext.ts create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore index 4896b63..9d3debb 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,8 @@ package-lock.json yarn-error.log node_modules/ auth/ -db/ \ No newline at end of file +db/ +.yarn/ +public/*.js +public/*.map +.yarnrc.yml diff --git a/package.json b/package.json index babc674..019efc2 100644 --- a/package.json +++ b/package.json @@ -1,28 +1,32 @@ { - "name": "volp", - "version": "1.0.0", - "description": "Open Travel Mapper", - "main": "server.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "start": "node server.js", - "demon": "nodemon server.js" - }, - "repository": { - "type": "git", - "url": "git@git.helcel.net:sora/otm.git" - }, - "author": "", - "license": "ISC", - "dependencies": { - "@fastify/leveldb": "^6.0.0", - "@fastify/static": "^8.0.0", - "@fastify/view": "^10.0.0", - "@prettier/plugin-pug": "^3.0.0", - "axios": "^1.4.0", - "fastify": "^5.0.0", - "nodemon": "^3.0.1", - "prettier": "^3.0.0", - "pug": "^3.0.2" - } + "name": "volp", + "version": "1.0.0", + "description": "Open Travel Mapper", + "main": "server.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "build": "esbuild src/app.ts --bundle --outfile=public/main.js --bundle --minify --sourcemap --tsconfig=tsconfig.json", + "start": "node server.js", + "demon": "nodemon -e ts,pug --watch src --exec \"yarn build && yarn start\"" + }, + "repository": { + "type": "git", + "url": "git@git.helcel.net:sora/otm.git" + }, + "author": "", + "license": "ISC", + "dependencies": { + "@fastify/leveldb": "^6.0.0", + "@fastify/static": "^8.0.0", + "@fastify/view": "^10.0.0", + "@prettier/plugin-pug": "^3.0.0", + "@types/node": "^22.13.5", + "axios": "^1.7.9", + "esbuild": "^0.25.0", + "fastify": "^5.0.0", + "nodemon": "^3.0.1", + "pretier": "^0.0.1", + "prettier": "^3.5.2", + "pug": "^3.0.2" + } } diff --git a/public/js/.DS_Store b/public/js/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 + axios.get("/api/" + id).then((response) => { + if (response.data == "") throw "Invalid Journey Data Received"; + let res = response.data; + + for (let e of res.main) { + if (e.dateRange) { + e.dateRange[0] = new Date(e.dateRange[0]); + e.dateRange[1] = new Date(e.dateRange[1]); + } + e.step_title = e.step_title || []; + } + return res; + }); + +export const save = (id: string, v: string) => + axios + .post("/api/" + id, v) + .then((response) => { + console.log("Saved..."); + }) + .catch((error) => { + console.warn("Error! Could not reach the API."); + }); + +export const query_nominatim = ( + q: string, + f: (v: string) => Boolean = () => true, +) => + axios + .get("/api/place/" + q) + .then((res) => res.data) + .then((res) => res.filter(f)); + +export const query_flight = (q: string) => + axios.get("/api/flight/" + q).then((res) => res.data); + +type NominatimResult = { + type: string; + category: string; + display_name: string; // DEBUG ONLY +}; + +export const is_restauration_type = (e: NominatimResult) => + ["restaurant", "cafe", "pub", "bar", "fast_food", "food_court"].indexOf( + e.type, + ) != -1; + +export const is_attraction_type = (e: NominatimResult): boolean => + [ + "tourism", + "leisure", + "place", + "amenity", + "highway", + "historic", + "natural", + "waterway", + ].indexOf(e.category) != -1 || + [ + "place_of_worship", + "national_park", + "nature_reserve", + "protected_area", + ].indexOf(e.type) != -1; + +export const icon_type = (item: NominatimResult): string => { + let t = item.type; + let c = item.category; + const arr = ["restaurant", "cafe", "pub", "bar", "fast_food", "food_court"]; + if (arr.indexOf(t) != -1) { + return "utensils"; + } else if (t == "hotel" || t == "hostel" || t == "guest_house") { + return "bed"; + } else if (t == "museum" || c == "historic" || t == "place_of_worship") { + return "landmark"; + } else if (t == "peak" || t == "viewpoint") { + return "mountain"; + } else if (t == "parking") { + return "parking"; + } else if ( + t == "water" || + t == "river" || + t == "lake" || + t == "torrent" || + t == "aquarium" + ) { + return "water"; + } else if (t == "community_centre" || t == "locality") { + return "building"; + } else if (t == "attraction") { + return "landmark"; + } else if (t == "information" || t == "university") { + return "landmark"; + } else if (t == "bridge") { + return "archway"; + } else if ( + t == "woodland" || + t == "shieling" || + t == "national_park" || + t == "zoo" || + t == "park" || + t == "garden" || + 0 + ) { + return "tree"; + } else if (t == "water_park" || t == "theme_park") { + return "dice-five"; + } else if ( + t == "?" || + t == "neighbourhood" || + t == "quarter" || + c == "highway" + ) { + return ""; + } else { + console.log(item.display_name, item.category, item.type); + return "question"; + } +}; diff --git a/src/app.ts b/src/app.ts new file mode 100644 index 0000000..524306e --- /dev/null +++ b/src/app.ts @@ -0,0 +1,13 @@ +import "./types/ext"; +import "./api"; +import "./old.js"; + +console.log("TEST"); + +if (false) { + console.log("B"); +} + +function test() { + console.log("CC"); +} diff --git a/public/js/main.js b/src/old.js similarity index 68% rename from public/js/main.js rename to src/old.js index 19da245..07049a7 100644 --- a/public/js/main.js +++ b/src/old.js @@ -1,142 +1,4 @@ -const gen_id = (length) => { - var result = ""; - const characters = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - const len = characters.length; - for (let i = 0; i < length; i++) { - result += characters.charAt(Math.floor(Math.random() * len)); - } - return result; -}; - -Date.prototype.toJSONLocal = (function () { - function addZ(n) { - return (n < 10 ? "0" : "") + n; - } - return function () { - return ( - this.getFullYear() + - "-" + - addZ(this.getMonth() + 1) + - "-" + - addZ(this.getDate()) - ); - }; -})(); - -function toEncoded(string) { - const codeUnits = Uint16Array.from( - { length: string.length }, - (element, index) => string.charCodeAt(index), - ); - const charCodes = new Uint8Array(codeUnits.buffer); - - let result = ""; - charCodes.forEach((char) => { - result += String.fromCharCode(char); - }); - return window.btoa(result); -} - -function toDecoded(string) { - let binary = window.atob(string); - const bytes = Uint8Array.from({ length: binary.length }, (element, index) => - binary.charCodeAt(index), - ); - const charCodes = new Uint16Array(bytes.buffer); - - let result = ""; - charCodes.forEach((char) => { - result += String.fromCharCode(char); - }); - return result; -} - -const query_nominatim = (q, f) => - axios - .get("/api/place/" + q) - .then((res) => res.data) - .then((res) => res.filter(f)); -const query_flight = (q) => - axios.get("/api/flight/" + q).then((res) => res.data); - -const is_restauration_type = (e) => - ["restaurant", "cafe", "pub", "bar", "fast_food", "food_court"].indexOf( - e.type, - ) != -1; - -const is_attraction_type = (e) => - [ - "tourism", - "leisure", - "place", - "amenity", - "highway", - "historic", - "natural", - "waterway", - ].indexOf(e.category) != -1 || - [ - "place_of_worship", - "national_park", - "nature_reserve", - "protected_area", - ].indexOf(e.type != -1); - -const icon_type = (item) => { - let t = item.type; - let c = item.category; - const arr = ["restaurant", "cafe", "pub", "bar", "fast_food", "food_court"]; - if (arr.indexOf(t) != -1) { - return "utensils"; - } else if (t == "hotel" || t == "hostel" || t == "guest_house") { - return "bed"; - } else if (t == "museum" || c == "historic" || t == "place_of_worship") { - return "landmark"; - } else if (t == "peak" || t == "viewpoint") { - return "mountain"; - } else if (t == "parking") { - return "parking"; - } else if ( - t == "water" || - t == "river" || - t == "lake" || - t == "torrent" || - t == "aquarium" - ) { - return "water"; - } else if (t == "community_centre" || t == "locality") { - return "building"; - } else if (t == "attraction") { - return "landmark"; - } else if (t == "information" || t == "university") { - return "landmark"; - } else if (t == "bridge") { - return "archway"; - } else if ( - t == "woodland" || - t == "shieling" || - t == "national_park" || - t == "zoo" || - t == "park" || - t == "garden" || - 0 - ) { - return "tree"; - } else if ((t == "water_park", t == "theme_park")) { - return "dice-five"; - } else if ( - t == "?" || - t == "neighbourhood" || - t == "quarter" || - c == "highway" - ) { - return ""; - } else { - console.log(item.display_name, item.category, item.type); - return "question"; - } -}; +import * as api from "./api"; Vue.component("l-map", window.Vue2Leaflet.LMap); Vue.component("l-tile-layer", window.Vue2Leaflet.LTileLayer); @@ -153,7 +15,7 @@ const app = new Vue({ data: { journey_edit: ["view", "short"].indexOf(window.location.pathname.split("/")[1]) == -1, - journey_id: window.location.pathname.split("/").pop() || gen_id(16), + journey_id: window.location.pathname.split("/").pop() || String.gen_id(16), journey_step_data: { day: 1, section: 0 }, journey_data: { @@ -374,25 +236,21 @@ const app = new Vue({ }, generate_icon: function (item, fcolor) { return L.AwesomeMarkers.icon({ - icon: icon_type(item) || "star", + icon: api.icon_type(item) || "star", prefix: "fa", markerColor: fcolor || item.color || "blue", }).createIcon().outerHTML; }, save_data: function () { - this.impexp = toEncoded(JSON.stringify(this.journey_data)); - axios - .post("/api/" + this.journey_id, this.journey_data) - .then((response) => { - console.log("Saved..."); - }) - .catch((error) => { - console.warn("Error! Could not reach the API."); - }); + this.impexp = JSON.stringify(this.journey_data).toEncoded(); + api.save(this.journey_id, this.journey_data); }, import_data: function () { - this.journey_data = Object.assign({}, JSON.parse(toDecoded(this.impexp))); + this.journey_data = Object.assign( + {}, + JSON.parse(this.impexp.toDecoded()), + ); this.journey_data.main.forEach((e) => { if (e.dateRange) { e.dateRange[0] = new Date(e.dateRange[0]); @@ -401,7 +259,7 @@ const app = new Vue({ }); }, export_data: function () { - this.impexp = toEncoded(JSON.stringify(this.journey_data)); + this.impexp = JSON.stringify(this.journey_data).toEncoded(); }, filter_selected: function (list, step) { return list.filter((e) => @@ -438,18 +296,7 @@ const app = new Vue({ } }); - axios.get("/api/" + this.journey_id).then((response) => { - if (response.data == "") throw "Invalid Journey Data Received"; - app.journey_data = response.data; - - for (let e of app.journey_data.main) { - if (e.dateRange) { - e.dateRange[0] = new Date(e.dateRange[0]); - e.dateRange[1] = new Date(e.dateRange[1]); - } - e.step_title = e.step_title || []; - } - }); + api.load(this.journey_id).then((r) => (app.journey_data = r)); this.debounceSave = _.debounce(this.save_data, 500); this.debounceSearch = { @@ -465,13 +312,15 @@ const app = new Vue({ }, 500), restaurants: _.debounce((q) => { this.querying.food = true; - this.search_nominatim(q, (r) => is_restauration_type(r)).then((r) => { - this.querying.food = false; - }); + this.search_nominatim(q, (r) => api.is_restauration_type(r)).then( + (r) => { + this.querying.food = false; + }, + ); }, 500), places: _.debounce((q) => { this.querying.place = true; - this.search_nominatim(q, (r) => is_attraction_type(r)).then((r) => { + this.search_nominatim(q, (r) => api.is_attraction_type(r)).then((r) => { this.querying.place = false; }); }, 500), diff --git a/src/types/ext.ts b/src/types/ext.ts new file mode 100644 index 0000000..cddb2b8 --- /dev/null +++ b/src/types/ext.ts @@ -0,0 +1,79 @@ +// DATE EXTENTION +declare global { + interface Date { + toJSONLocal: () => string; + } +} +Date.prototype.toJSONLocal = function () { + function addZ(n: number): string { + return n <= 9 ? `0${n}` : `${n}`; + } + return [ + this.getFullYear(), + addZ(this.getMonth() + 1), + addZ(this.getDate()), + ].join("-"); +}; + +// ARRAY EXTENTION +declare global { + interface Array { + foldl(f: (x: T, acc: B) => B, acc: B): B; + foldr(f: (x: T, acc: B) => B, acc: B): B; + } +} +Array.prototype.foldr = function (f: (x: T, acc: B) => B, acc: B): B { + return this.reverse().foldl(f, acc); +}; + +Array.prototype.foldl = function (f: (x: T, acc: B) => B, acc: B): B { + for (let i = 0; i < this.length; i++) acc = f(this[i], acc); + return acc; +}; + +// STRING EXTENTION +declare global { + interface String { + btoa: () => String; + toEncoded: () => String; + toDecoded: () => String; + } +} + +String.prototype.btoa = function () { + return window.btoa(this); +}; + +String.prototype.toEncoded = function () { + return window.btoa( + Array.from(this as string, (c) => c.charCodeAt(0)).foldl( + (e, v) => v + String.fromCharCode(e), + "", + ), + ); +}; + +String.prototype.toDecoded = function () { + return Array.from(window.atob(this), (c) => c.charCodeAt(0)).foldl( + (e, v) => v + String.fromCharCode(e), + "", + ); +}; + +declare global { + interface StringConstructor { + gen_id: (l: Number) => String; + } +} + +String.gen_id = function (length) { + const characters = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + return Array.from(Array(length)) + .map((_v) => + characters.charAt(Math.floor(Math.random() * characters.length)), + ) + .join(""); +}; + +export {}; diff --git a/template/module/foot.pug b/template/module/foot.pug index 4804f7d..9c2437c 100644 --- a/template/module/foot.pug +++ b/template/module/foot.pug @@ -1,16 +1,16 @@ +script(src="https://unpkg.com/leaflet") +script(src="https://unpkg.com/leaflet.awesome-markers") +//- script(src="https://unpkg.com/axios") +script(src="https://unpkg.com/lodash") +script(src="https://unpkg.com/sortablejs") + script(src="https://unpkg.com/vue@2") script(src="https://unpkg.com/vue2-datepicker") -script(src="https://unpkg.com/leaflet") -script(src="https://unpkg.com/vue2-leaflet") -script(src="https://unpkg.com/leaflet.awesome-markers") -script(src="https://unpkg.com/axios") -script(src="https://unpkg.com/lodash") -script(src="https://unpkg.com/vue-multiselect@2") script(src="https://unpkg.com/vue-textarea-autosize") -script(src="https://unpkg.com/sortablejs") +script(src="https://unpkg.com/vue-multiselect@2") +script(src="https://unpkg.com/vue2-leaflet") script(src="https://unpkg.com/vuedraggable") - -script(src="/public/js/main.js", type="text/javascript", charset="utf-8") +script(src="/public/main.js", type="text/javascript", charset="utf-8") footer.bg-dark .container .section.text-center.text-small diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..6a54986 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,12 @@ +{ + + "compilerOptions": { + "target": "esnext", + "typeRoots": ["./node_modules/@types", "./types/ext"], + "lib": ["esnext", "DOM"], + "noEmit": true, // Disable emitting output (use esbuild to handle this) + "skipLibCheck": true, // Skip type checking of all declaration files (*.d.ts) + "strict": false, // Disable strict type checks if needed + "moduleResolution": "node", + } +} diff --git a/yarn.lock b/yarn.lock index e1faa9e..3d1e226 100644 --- a/yarn.lock +++ b/yarn.lock @@ -40,6 +40,181 @@ __metadata: languageName: node linkType: hard +"@esbuild/aix-ppc64@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/aix-ppc64@npm:0.25.0" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/android-arm64@npm:0.25.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/android-arm@npm:0.25.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/android-x64@npm:0.25.0" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/darwin-arm64@npm:0.25.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/darwin-x64@npm:0.25.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/freebsd-arm64@npm:0.25.0" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/freebsd-x64@npm:0.25.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/linux-arm64@npm:0.25.0" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/linux-arm@npm:0.25.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/linux-ia32@npm:0.25.0" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/linux-loong64@npm:0.25.0" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/linux-mips64el@npm:0.25.0" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/linux-ppc64@npm:0.25.0" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/linux-riscv64@npm:0.25.0" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/linux-s390x@npm:0.25.0" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/linux-x64@npm:0.25.0" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-arm64@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/netbsd-arm64@npm:0.25.0" + conditions: os=netbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/netbsd-x64@npm:0.25.0" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-arm64@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/openbsd-arm64@npm:0.25.0" + conditions: os=openbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/openbsd-x64@npm:0.25.0" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/sunos-x64@npm:0.25.0" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/win32-arm64@npm:0.25.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/win32-ia32@npm:0.25.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.25.0": + version: 0.25.0 + resolution: "@esbuild/win32-x64@npm:0.25.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@fastify/accept-negotiator@npm:^2.0.0": version: 2.0.1 resolution: "@fastify/accept-negotiator@npm:2.0.1" @@ -219,6 +394,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^22.13.5": + version: 22.13.5 + resolution: "@types/node@npm:22.13.5" + dependencies: + undici-types: "npm:~6.20.0" + checksum: 10c0/a2e7ed7bb0690e439004779baedeb05159c5cc41ef6d81c7a6ebea5303fde4033669e1c0e41ff7453b45fd2fea8dbd55fddfcd052950c7fcae3167c970bca725 + languageName: node + linkType: hard + "abbrev@npm:^3.0.0": version: 3.0.0 resolution: "abbrev@npm:3.0.0" @@ -367,7 +551,7 @@ __metadata: languageName: node linkType: hard -"axios@npm:^1.4.0": +"axios@npm:^1.7.9": version: 1.7.9 resolution: "axios@npm:1.7.9" dependencies: @@ -466,7 +650,7 @@ __metadata: languageName: node linkType: hard -"call-bind-apply-helpers@npm:^1.0.1": +"call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": version: 1.0.2 resolution: "call-bind-apply-helpers@npm:1.0.2" dependencies: @@ -728,7 +912,7 @@ __metadata: languageName: node linkType: hard -"es-object-atoms@npm:^1.0.0": +"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": version: 1.1.1 resolution: "es-object-atoms@npm:1.1.1" dependencies: @@ -749,6 +933,92 @@ __metadata: languageName: node linkType: hard +"esbuild@npm:^0.25.0": + version: 0.25.0 + resolution: "esbuild@npm:0.25.0" + dependencies: + "@esbuild/aix-ppc64": "npm:0.25.0" + "@esbuild/android-arm": "npm:0.25.0" + "@esbuild/android-arm64": "npm:0.25.0" + "@esbuild/android-x64": "npm:0.25.0" + "@esbuild/darwin-arm64": "npm:0.25.0" + "@esbuild/darwin-x64": "npm:0.25.0" + "@esbuild/freebsd-arm64": "npm:0.25.0" + "@esbuild/freebsd-x64": "npm:0.25.0" + "@esbuild/linux-arm": "npm:0.25.0" + "@esbuild/linux-arm64": "npm:0.25.0" + "@esbuild/linux-ia32": "npm:0.25.0" + "@esbuild/linux-loong64": "npm:0.25.0" + "@esbuild/linux-mips64el": "npm:0.25.0" + "@esbuild/linux-ppc64": "npm:0.25.0" + "@esbuild/linux-riscv64": "npm:0.25.0" + "@esbuild/linux-s390x": "npm:0.25.0" + "@esbuild/linux-x64": "npm:0.25.0" + "@esbuild/netbsd-arm64": "npm:0.25.0" + "@esbuild/netbsd-x64": "npm:0.25.0" + "@esbuild/openbsd-arm64": "npm:0.25.0" + "@esbuild/openbsd-x64": "npm:0.25.0" + "@esbuild/sunos-x64": "npm:0.25.0" + "@esbuild/win32-arm64": "npm:0.25.0" + "@esbuild/win32-ia32": "npm:0.25.0" + "@esbuild/win32-x64": "npm:0.25.0" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-arm64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-arm64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10c0/5767b72da46da3cfec51661647ec850ddbf8a8d0662771139f10ef0692a8831396a0004b2be7966cecdb08264fb16bdc16290dcecd92396fac5f12d722fa013d + languageName: node + linkType: hard + "escape-html@npm:~1.0.3": version: 1.0.3 resolution: "escape-html@npm:1.0.3" @@ -941,24 +1211,24 @@ __metadata: linkType: hard "get-intrinsic@npm:^1.2.6": - version: 1.2.7 - resolution: "get-intrinsic@npm:1.2.7" + version: 1.3.0 + resolution: "get-intrinsic@npm:1.3.0" dependencies: - call-bind-apply-helpers: "npm:^1.0.1" + call-bind-apply-helpers: "npm:^1.0.2" es-define-property: "npm:^1.0.1" es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.0.0" + es-object-atoms: "npm:^1.1.1" function-bind: "npm:^1.1.2" - get-proto: "npm:^1.0.0" + get-proto: "npm:^1.0.1" gopd: "npm:^1.2.0" has-symbols: "npm:^1.1.0" hasown: "npm:^2.0.2" math-intrinsics: "npm:^1.1.0" - checksum: 10c0/b475dec9f8bff6f7422f51ff4b7b8d0b68e6776ee83a753c1d627e3008c3442090992788038b37eff72e93e43dceed8c1acbdf2d6751672687ec22127933080d + checksum: 10c0/52c81808af9a8130f581e6a6a83e1ba4a9f703359e7a438d1369a5267a25412322f03dcbd7c549edaef0b6214a0630a28511d7df0130c93cfd380f4fa0b5b66a languageName: node linkType: hard -"get-proto@npm:^1.0.0": +"get-proto@npm:^1.0.1": version: 1.0.1 resolution: "get-proto@npm:1.0.1" dependencies: @@ -1261,11 +1531,11 @@ __metadata: linkType: hard "jackspeak@npm:^4.0.1": - version: 4.0.3 - resolution: "jackspeak@npm:4.0.3" + version: 4.1.0 + resolution: "jackspeak@npm:4.1.0" dependencies: "@isaacs/cliui": "npm:^8.0.2" - checksum: 10c0/3d252c84fe3ea2b44da70ea3bb46a4a6fb13cd22c9e256ee254684be86ace87f5ce40cb181d279dd6ee1de5d82b88b7f231335e9f45dcbce17b6d64fcb04de23 + checksum: 10c0/08a6a24a366c90b83aef3ad6ec41dcaaa65428ffab8d80bc7172add0fbb8b134a34f415ad288b2a6fbd406526e9a62abdb40ed4f399fbe00cb45c44056d4dce0 languageName: node linkType: hard @@ -1762,7 +2032,14 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^3.0.0": +"pretier@npm:^0.0.1": + version: 0.0.1 + resolution: "pretier@npm:0.0.1" + checksum: 10c0/206f5b353c32a9ad0e38243ad2caf7c8859ef43c975514e1c725088e4925d8b1480f73b96ebfd5ceaa1a563a77a3b8c893db7bb3642585bfa0c635f7ee149885 + languageName: node + linkType: hard + +"prettier@npm:^3.5.2": version: 3.5.2 resolution: "prettier@npm:3.5.2" bin: @@ -2351,6 +2628,13 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:~6.20.0": + version: 6.20.0 + resolution: "undici-types@npm:6.20.0" + checksum: 10c0/68e659a98898d6a836a9a59e6adf14a5d799707f5ea629433e025ac90d239f75e408e2e5ff086afc3cace26f8b26ee52155293564593fbb4a2f666af57fc59bf + languageName: node + linkType: hard + "unique-filename@npm:^4.0.0": version: 4.0.0 resolution: "unique-filename@npm:4.0.0" @@ -2391,10 +2675,13 @@ __metadata: "@fastify/static": "npm:^8.0.0" "@fastify/view": "npm:^10.0.0" "@prettier/plugin-pug": "npm:^3.0.0" - axios: "npm:^1.4.0" + "@types/node": "npm:^22.13.5" + axios: "npm:^1.7.9" + esbuild: "npm:^0.25.0" fastify: "npm:^5.0.0" nodemon: "npm:^3.0.1" - prettier: "npm:^3.0.0" + pretier: "npm:^0.0.1" + prettier: "npm:^3.5.2" pug: "npm:^3.0.2" languageName: unknown linkType: soft