This commit is contained in:
polwex 2024-10-22 21:45:57 +07:00
parent f1791b8699
commit e68c675be2
9 changed files with 115 additions and 90 deletions

View File

@ -8,7 +8,7 @@ use kinode_process_lib::{
}, },
StatusCode, StatusCode,
}, },
println, set_state, Address, Message, Request, kiprintln, set_state, Address, Message, Request,
}; };
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use std::collections::HashMap; use std::collections::HashMap;
@ -121,7 +121,6 @@ pub fn load_state() -> State {
fn handle_message(our: &Address) -> anyhow::Result<()> { fn handle_message(our: &Address) -> anyhow::Result<()> {
let message = await_message()?; let message = await_message()?;
if !message.is_request() { if !message.is_request() {
return Err(anyhow::anyhow!("unexpected Response: {:?}", message)); return Err(anyhow::anyhow!("unexpected Response: {:?}", message));
} }
@ -160,26 +159,27 @@ fn handle_http(our: &Address, request: IncomingHttpRequest) -> Result<()> {
"GET" => handle_get(our, request, &mut state), "GET" => handle_get(our, request, &mut state),
"POST" => handle_post(our, request, &mut state), "POST" => handle_post(our, request, &mut state),
_ => { _ => {
println!("cookies - got weird req - {:?}", request); kiprintln!("cookies - got weird req - {:?}", request);
Ok(()) Ok(())
} }
} }
} }
fn handle_get(our: &Address, req: IncomingHttpRequest, state: &mut State) -> anyhow::Result<()> { fn handle_get(our: &Address, req: IncomingHttpRequest, state: &mut State) -> anyhow::Result<()> {
// println!("got GET req - {:?}", req); // kiprintln!("got GET req - {:?}", req);
let conc = format!("{}:{}{}", our.process(), our.package_id(), "/api"); let conc = format!("{}:{}{}", our.process(), our.package_id(), "/api");
let pat = req.bound_path(Some(conc.as_str())); let pat = req.bound_path(Some(conc.as_str()));
kiprintln!("got get {} {}", conc, pat);
// let pats = req.path()?; // let pats = req.path()?;
// let pat = pats.as_str(); // let pat = pats.as_str();
let uparams = req.url_params(); let uparams = req.url_params();
let qparams = req.query_params(); let qparams = req.query_params();
// println!("request path {}", pat); // kiprintln!("request path {}", pat);
// println!("request up {:?}", uparams); // kiprintln!("request up {:?}", uparams);
// println!("request qp {:?}", qparams); // kiprintln!("request qp {:?}", qparams);
match pat { match pat {
"/debug" => { "/debug" => {
println!("current state {:?}", state); kiprintln!("current state {:?}", state);
} }
"/all" => { "/all" => {
let res = UIRes::All(state.to_owned()); let res = UIRes::All(state.to_owned());
@ -219,7 +219,9 @@ fn handle_get(our: &Address, req: IncomingHttpRequest, state: &mut State) -> any
} }
} }
} }
_ => {} _ => {
kiprintln!("wtf");
}
} }
send_response(StatusCode::CREATED, None, vec![]); send_response(StatusCode::CREATED, None, vec![]);
Ok(()) Ok(())
@ -238,7 +240,7 @@ fn parse_test() {
{"auth_multi":{"domain":".x.com","expirationDate":1736167622.15024,"hostOnly":false,"httpOnly":true,"name":"auth_multi","path":"/","sameSite":"lax","secure":true,"session":false,"storeId":"0","value":"\"1710606417324015616:604ed700cfb5c8a5d2665086503f1ec8b6032ef4\"","id":1},"auth_token":{"domain":".x.com","expirationDate":1736097942.573061,"hostOnly":false,"httpOnly":true,"name":"auth_token","path":"/","sameSite":"no_restriction","secure":true,"session":false,"storeId":"0","value":"2527de3d3719d900cd5658525e559d0966d86662","id":2},"ct0":{"domain":".x.com","expirationDate":1736097942.861119,"hostOnly":false,"httpOnly":false,"name":"ct0","path":"/","sameSite":"lax","secure":true,"session":false,"storeId":"0","value":"1461eb581cb824ea00b652d27a735f1abebe2b47de834cddd624afdbee20c4f033972cb63fd298d0db8cded9a75429df3907ced5bb375f12cf02100825b16f7c02a00253ca1e8883b60ace17ccea1622","id":3},"dnt":{"domain":".x.com","expirationDate":1736097942.572255,"hostOnly":false,"httpOnly":false,"name":"dnt","path":"/","sameSite":"no_restriction","secure":true,"session":false,"storeId":"0","value":"1","id":4},"external_referer":{"domain":".x.com","expirationDate":1721160063.509523,"hostOnly":false,"httpOnly":false,"name":"external_referer","path":"/","sameSite":"unspecified","secure":true,"session":false,"storeId":"0","value":"padhuUp37zjgzgv1mFWxJ12Ozwit7owX|0|8e8t2xd8A2w%3D","id":5},"guest_id":{"domain":".x.com","expirationDate":1736097942.861021,"hostOnly":false,"httpOnly":false,"name":"guest_id","path":"/","sameSite":"no_restriction","secure":true,"session":false,"storeId":"0","value":"v1%3A172054594269674803","id":6},"guest_id_ads":{"domain":".x.com","expirationDate":1736167616.625858,"hostOnly":false,"httpOnly":false,"name":"guest_id_ads","path":"/","sameSite":"no_restriction","secure":true,"session":false,"storeId":"0","value":"v1%3A172054594269674803","id":7},"guest_id_marketing":{"domain":".x.com","expirationDate":1736167616.625932,"hostOnly":false,"httpOnly":false,"name":"guest_id_marketing","path":"/","sameSite":"no_restriction","secure":true,"session":false,"storeId":"0","value":"v1%3A172054594269674803","id":8},"kdt":{"domain":".x.com","expirationDate":1736097942.572385,"hostOnly":false,"httpOnly":true,"name":"kdt","path":"/","sameSite":"unspecified","secure":true,"session":false,"storeId":"0","value":"iWdBqeAH3UcgpwzPxi6CZ2lRTk4Fqia3OR5VbiSo","id":9},"personalization_id":{"domain":".x.com","expirationDate":1736167616.625994,"hostOnly":false,"httpOnly":false,"name":"personalization_id","path":"/","sameSite":"no_restriction","secure":true,"session":false,"storeId":"0","value":"\"v1_O5kcdlrANZbUakXhbmlSTw==\"","id":10},"twid":{"domain":".x.com","expirationDate":1736167616.773335,"hostOnly":false,"httpOnly":false,"name":"twid","path":"/","sameSite":"no_restriction","secure":true,"session":false,"storeId":"0","value":"u%3D1809740330922831872","id":11},"d_prefs":{"domain":"x.com","hostOnly":true,"httpOnly":false,"name":"d_prefs","path":"/","sameSite":"unspecified","secure":true,"session":true,"storeId":"0","value":"MjoxLGNvbnNlbnRfdmVyc2lvbjoyLHRleHRfdmVyc2lvbjoxMDAw","id":12},"lang":{"domain":"x.com","hostOnly":true,"httpOnly":false,"name":"lang","path":"/","sameSite":"unspecified","secure":false,"session":true,"storeId":"0","value":"en","id":13}} {"auth_multi":{"domain":".x.com","expirationDate":1736167622.15024,"hostOnly":false,"httpOnly":true,"name":"auth_multi","path":"/","sameSite":"lax","secure":true,"session":false,"storeId":"0","value":"\"1710606417324015616:604ed700cfb5c8a5d2665086503f1ec8b6032ef4\"","id":1},"auth_token":{"domain":".x.com","expirationDate":1736097942.573061,"hostOnly":false,"httpOnly":true,"name":"auth_token","path":"/","sameSite":"no_restriction","secure":true,"session":false,"storeId":"0","value":"2527de3d3719d900cd5658525e559d0966d86662","id":2},"ct0":{"domain":".x.com","expirationDate":1736097942.861119,"hostOnly":false,"httpOnly":false,"name":"ct0","path":"/","sameSite":"lax","secure":true,"session":false,"storeId":"0","value":"1461eb581cb824ea00b652d27a735f1abebe2b47de834cddd624afdbee20c4f033972cb63fd298d0db8cded9a75429df3907ced5bb375f12cf02100825b16f7c02a00253ca1e8883b60ace17ccea1622","id":3},"dnt":{"domain":".x.com","expirationDate":1736097942.572255,"hostOnly":false,"httpOnly":false,"name":"dnt","path":"/","sameSite":"no_restriction","secure":true,"session":false,"storeId":"0","value":"1","id":4},"external_referer":{"domain":".x.com","expirationDate":1721160063.509523,"hostOnly":false,"httpOnly":false,"name":"external_referer","path":"/","sameSite":"unspecified","secure":true,"session":false,"storeId":"0","value":"padhuUp37zjgzgv1mFWxJ12Ozwit7owX|0|8e8t2xd8A2w%3D","id":5},"guest_id":{"domain":".x.com","expirationDate":1736097942.861021,"hostOnly":false,"httpOnly":false,"name":"guest_id","path":"/","sameSite":"no_restriction","secure":true,"session":false,"storeId":"0","value":"v1%3A172054594269674803","id":6},"guest_id_ads":{"domain":".x.com","expirationDate":1736167616.625858,"hostOnly":false,"httpOnly":false,"name":"guest_id_ads","path":"/","sameSite":"no_restriction","secure":true,"session":false,"storeId":"0","value":"v1%3A172054594269674803","id":7},"guest_id_marketing":{"domain":".x.com","expirationDate":1736167616.625932,"hostOnly":false,"httpOnly":false,"name":"guest_id_marketing","path":"/","sameSite":"no_restriction","secure":true,"session":false,"storeId":"0","value":"v1%3A172054594269674803","id":8},"kdt":{"domain":".x.com","expirationDate":1736097942.572385,"hostOnly":false,"httpOnly":true,"name":"kdt","path":"/","sameSite":"unspecified","secure":true,"session":false,"storeId":"0","value":"iWdBqeAH3UcgpwzPxi6CZ2lRTk4Fqia3OR5VbiSo","id":9},"personalization_id":{"domain":".x.com","expirationDate":1736167616.625994,"hostOnly":false,"httpOnly":false,"name":"personalization_id","path":"/","sameSite":"no_restriction","secure":true,"session":false,"storeId":"0","value":"\"v1_O5kcdlrANZbUakXhbmlSTw==\"","id":10},"twid":{"domain":".x.com","expirationDate":1736167616.773335,"hostOnly":false,"httpOnly":false,"name":"twid","path":"/","sameSite":"no_restriction","secure":true,"session":false,"storeId":"0","value":"u%3D1809740330922831872","id":11},"d_prefs":{"domain":"x.com","hostOnly":true,"httpOnly":false,"name":"d_prefs","path":"/","sameSite":"unspecified","secure":true,"session":true,"storeId":"0","value":"MjoxLGNvbnNlbnRfdmVyc2lvbjoyLHRleHRfdmVyc2lvbjoxMDAw","id":12},"lang":{"domain":"x.com","hostOnly":true,"httpOnly":false,"name":"lang","path":"/","sameSite":"unspecified","secure":false,"session":true,"storeId":"0","value":"en","id":13}}
"#; "#;
let pj = serde_json::from_str::<CookieMap>(str); let pj = serde_json::from_str::<CookieMap>(str);
println!("json parsing test {:?}", pj); kiprintln!("json parsing test {:?}", pj);
// let jason = r#" // let jason = r#"
// { // {
// "domain": ".x.com", // "domain": ".x.com",
@ -256,16 +258,16 @@ fn parse_test() {
// } // }
// "#; // "#;
// let pj = serde_json::from_str::<Cookie>(jason); // let pj = serde_json::from_str::<Cookie>(jason);
// println!("json parsing test {:?}", pj); // kiprintln!("json parsing test {:?}", pj);
// // let example: UIReq = UIReq::SetAPIKey(APIRes { // // let example: UIReq = UIReq::SetAPIKey(APIRes {
// // app: "foo".to_string(), // // app: "foo".to_string(),
// // api_key: "bar".to_string(), // // api_key: "bar".to_string(),
// // }); // // });
// // let value = serde_json::to_string(&example)?; // // let value = serde_json::to_string(&example)?;
// // println!("expected json {}", value); // // kiprintln!("expected json {}", value);
} }
fn handle_post(our: &Address, req: IncomingHttpRequest, state: &mut State) -> anyhow::Result<()> { fn handle_post(our: &Address, req: IncomingHttpRequest, state: &mut State) -> anyhow::Result<()> {
println!("cokies post request!"); kiprintln!("cokies post request!");
// parse_test(); // parse_test();
// let conc = format!("{}:{}{}", our.process(), our.package_id(), "/api"); // let conc = format!("{}:{}{}", our.process(), our.package_id(), "/api");
@ -276,7 +278,7 @@ fn handle_post(our: &Address, req: IncomingHttpRequest, state: &mut State) -> an
// Fail silently if we can't parse the request // Fail silently if we can't parse the request
return Ok(()); return Ok(());
}; };
println!("post body {:?}", post_request); kiprintln!("post body {:?}", post_request);
match post_request { match post_request {
UIReq::SetCookie { app, cookie } => { UIReq::SetCookie { app, cookie } => {
@ -294,22 +296,26 @@ fn handle_post(our: &Address, req: IncomingHttpRequest, state: &mut State) -> an
Ok(()) Ok(())
} }
call_init!(init); call_init!(init);
fn init(our: Address) { fn init_http() -> anyhow::Result<()> {
let mut http_server = HttpServer::new(5); let mut http_server = HttpServer::new(5);
let http_config = HttpBindingConfig::default(); let http_config = HttpBindingConfig::default();
let ws_config = WsBindingConfig::default(); let ws_config = WsBindingConfig::default();
http_server.bind_ws_path("/", ws_config.clone()); http_server.bind_ws_path("/", ws_config.clone())?;
// REST API http_server.bind_http_path("/", http_config.clone())?;
http_server.bind_http_path("/", http_config.clone()); http_server.bind_http_path("/api", http_config.clone())?;
http_server.bind_http_path("/api", http_config.clone()); http_server.bind_http_path("/api/all", http_config.clone())?;
http_server.bind_http_path("/api/all", http_config.clone()); http_server.bind_http_path("/api/app", http_config.clone())?;
http_server.bind_http_path("/api/app", http_config.clone()); Ok(())
}
fn init(our: Address) {
kiprintln!("begin cookies");
let _ = init_http();
loop { loop {
match handle_message(&our) { match handle_message(&our) {
Ok(()) => {} Ok(()) => {}
Err(e) => { Err(e) => {
println!("error: {:?}", e); kiprintln!("error: {:?}", e);
} }
}; };
} }

View File

@ -32,6 +32,7 @@
"request_networking": true, "request_networking": true,
"request_capabilities": [ "request_capabilities": [
"homepage:homepage:sys", "homepage:homepage:sys",
"vfs:distro:sys",
"http_server:distro:sys", "http_server:distro:sys",
"http_client:distro:sys" "http_client:distro:sys"
], ],

View File

@ -119,17 +119,21 @@ fn send_json(res: UIRes) -> Result<()> {
Ok(()) Ok(())
} }
call_init!(init); call_init!(init);
fn init(our: Address) { fn init_http() -> anyhow::Result<()> {
println!("begin proxy");
println!("our {:?}", our);
println!("our {:?}", our.process());
let mut http_server = HttpServer::new(5); let mut http_server = HttpServer::new(5);
let http_config = HttpBindingConfig::default(); let http_config = HttpBindingConfig::default();
let ws_config = WsBindingConfig::default(); let ws_config = WsBindingConfig::default();
http_server.bind_ws_path("/", ws_config.clone()); http_server.bind_ws_path("/", ws_config.clone())?;
// REST API http_server.bind_http_path("/", http_config.clone())?;
http_server.bind_http_path("/api", http_config.clone()); http_server.bind_http_path("/api", http_config.clone())?;
Ok(())
}
fn init(our: Address) {
println!("begin proxy");
println!("our {:?}", our);
println!("our {:?}", our.process());
let _ = init_http();
loop { loop {
match handle_message(&our) { match handle_message(&our) {
Ok(()) => {} Ok(()) => {}

1
twittok/src/ICON Normal file

File diff suppressed because one or more lines are too long

View File

@ -3,6 +3,7 @@ use std::str::FromStr;
use kinode_process_lib::{ use kinode_process_lib::{
await_message, call_init, get_blob, await_message, call_init, get_blob,
homepage::add_to_homepage,
http::{ http::{
server::{ server::{
send_response, send_ws_push, HttpBindingConfig, HttpServer, HttpServerRequest, send_response, send_ws_push, HttpBindingConfig, HttpServer, HttpServerRequest,
@ -14,6 +15,7 @@ use kinode_process_lib::{
}; };
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
const ICON: &str = include_str!("ICON");
wit_bindgen::generate!({ wit_bindgen::generate!({
path: "target/wit", path: "target/wit",
world: "tok-sortugdev-dot-os-v0", world: "tok-sortugdev-dot-os-v0",
@ -261,21 +263,25 @@ fn handle_message(
} }
call_init!(init); call_init!(init);
fn init(our: Address) { fn init_http(our: &Address) -> anyhow::Result<()> {
println!("begin");
let mut message_archive: MessageArchive = HashMap::new();
let mut channel_id = 0;
let mut http_server = HttpServer::new(5); let mut http_server = HttpServer::new(5);
let http_config = HttpBindingConfig::default(); let http_config = HttpBindingConfig::default();
let ws_config = WsBindingConfig::default(); let ws_config = WsBindingConfig::default();
http_server.bind_ws_path("/", ws_config.clone()); http_server.bind_ws_path("/", ws_config.clone())?;
// REST API // REST API
http_server.bind_http_path("/api", http_config.clone()); http_server.bind_http_path("/api", http_config.clone())?;
http_server.serve_ui(&our, "ui", vec!["/"], http_config.clone()); http_server.serve_ui(our, "ui", vec!["/"], http_config.clone())?;
add_to_homepage("抖推", Some(ICON), Some("/"), None);
Ok(())
}
fn init(our: Address) {
println!("begin");
let mut message_archive: MessageArchive = HashMap::new();
let mut channel_id = 0;
let _ = init_http(&our);
loop { loop {
match handle_message(&our, &mut message_archive, &mut channel_id) { match handle_message(&our, &mut message_archive, &mut channel_id) {

View File

@ -10,6 +10,7 @@ import { useEffect, useState } from "react";
import { useHistory, Router, Route } from "./logic/router"; import { useHistory, Router, Route } from "./logic/router";
import { useQueryClient } from "@tanstack/react-query"; import { useQueryClient } from "@tanstack/react-query";
import { twatterCookieQ } from "./logic/queries"; import { twatterCookieQ } from "./logic/queries";
import { PROCESS_ID } from "./logic/constants";
function App() { function App() {
const [loading, setLoading] = useState(true); const [loading, setLoading] = useState(true);
@ -19,16 +20,16 @@ function App() {
await qc.prefetchQuery(twatterCookieQ); await qc.prefetchQuery(twatterCookieQ);
} }
useEffect(() => { useEffect(() => {
init().then(_ => { init().then((_) => {
setLoading(false); setLoading(false);
}); });
pref(); pref();
}, []); }, []);
// const { init } = useGlobalState(); // const { init } = useGlobalState();
if (loading) return <img className="spinner gc" src={spinner} /> if (loading) return <img className="spinner gc" src={spinner} />;
return ( return (
<> <>
<Router basePath="/"> <Router basePath={`/${PROCESS_ID}`}>
<Route path="/" component={Nav} /> <Route path="/" component={Nav} />
<Route path="/cookies" component={Cookies} /> <Route path="/cookies" component={Cookies} />
<Route path="/main" component={Loader} /> <Route path="/main" component={Loader} />
@ -48,7 +49,7 @@ function Nav() {
<a onClick={() => navigate("/main")} className="button"> <a onClick={() => navigate("/main")} className="button">
Go Browse Go Browse
</a> </a>
<Test /> <Test />
</> </>
); );
} }

View File

@ -1,20 +1,17 @@
import { import { COOKIE_PROCESS_ID, NODE_URL, PROXY_PROCESS_ID } from "./constants";
COOKIE_PROCESS_ID,
PROXY_PROCESS_ID,
} from "./constants";
import { APIRes, CookieMap, CookieRes, CookiesRes } from "./types"; import { APIRes, CookieMap, CookieRes, CookiesRes } from "./types";
export async function fetchAllCookies(): Promise<CookiesRes> { export async function fetchAllCookies(): Promise<CookiesRes> {
const res = await getCookie(`/all`); const res = await getCookie(`/all`);
return res.All return res.All;
} }
export async function fetchCookie(name: string): Promise<CookieRes> { export async function fetchCookie(name: string): Promise<CookieRes> {
const res = await getCookie(`/app?name=${name}&api=false`); const res = await getCookie(`/app?name=${name}&api=false`);
return res.App return res.App;
} }
export async function fetchAPIKey(name: string): Promise<APIRes> { export async function fetchAPIKey(name: string): Promise<APIRes> {
const res = await getCookie(`/app?name=${name}&api=true`); const res = await getCookie(`/app?name=${name}&api=true`);
return res.App return res.App;
} }
export async function saveAPIKey(app: string, value: string) { export async function saveAPIKey(app: string, value: string) {
const payload = { SetAPIKey: { app, api_key: value } }; const payload = { SetAPIKey: { app, api_key: value } };
@ -26,7 +23,7 @@ export async function saveCookie(app: string, value: CookieMap) {
} }
async function getCookie(path: string) { async function getCookie(path: string) {
// const url = `${NODE_URL}/${COOKIE_PROCESS_ID}${path}` // const url = `${NODE_URL}/${COOKIE_PROCESS_ID}/api${path}`;
const url = `/${COOKIE_PROCESS_ID}/api${path}`; const url = `/${COOKIE_PROCESS_ID}/api${path}`;
const res = await fetch(url); const res = await fetch(url);
const j = await res.json(); const j = await res.json();
@ -53,10 +50,10 @@ export async function postProxy(payload: any, naked = false) {
// const url = `${NODE_URL}/${PROXY_PROCESS_ID}` // const url = `${NODE_URL}/${PROXY_PROCESS_ID}`
const url = `/${PROXY_PROCESS_ID}/api`; const url = `/${PROXY_PROCESS_ID}/api`;
const res = await fetch(url, opts); const res = await fetch(url, opts);
if (naked) return res if (naked) return res;
console.log(res, "post proxy res") console.log(res, "post proxy res");
const j = await res.json(); const j = await res.json();
console.log(j, "post proxy json") console.log(j, "post proxy json");
return j; return j;
} }
async function getProxy() { async function getProxy() {
@ -66,7 +63,7 @@ async function getProxy() {
return res; return res;
} }
export async function saveWord(word: string){ export async function saveWord(word: string) {
// TODO // TODO
} }

View File

@ -1,11 +1,13 @@
export const COOKIE_PROCESS_ID = "cookies:tok:sortugdev.os"; export const COOKIE_PROCESS_ID = "cookies:tok:sortugdev.os";
export const PROXY_PROCESS_ID = "proxy:tok:sortugdev.os"; export const PROXY_PROCESS_ID = "proxy:tok:sortugdev.os";
export const NODE_URL = "http://localhost:8095"; export const PROCESS_ID = "twittok:tok:sortugdev.os";
export const NODE_URL = "http://localhost:8080";
export const TIMELINE_URL = export const TIMELINE_URL =
"https://x.com/i/api/graphql/A_qu1009UoeQToazaP4YCg/HomeTimeline"; "https://x.com/i/api/graphql/A_qu1009UoeQToazaP4YCg/HomeTimeline";
export const translationPrompt = "You will be provided with a text in Thai, from Twitter, so it's rather casual in that internet slang way. Your task is to translate it into English. Please keep the tone of the original as much as possible."; export const translationPrompt =
"You will be provided with a text in Thai, from Twitter, so it's rather casual in that internet slang way. Your task is to translate it into English. Please keep the tone of the original as much as possible.";
export const DefaultPrompts = { export const DefaultPrompts = {
translate: translationPrompt translate: translationPrompt,
} };

View File

@ -1,50 +1,57 @@
import { defineConfig } from 'vite' import { defineConfig } from "vite";
import react from '@vitejs/plugin-react' import react from "@vitejs/plugin-react";
/* const BASE_URL = "/twittok:tok:sortugdev.os";
If you are developing a UI outside of a Kinode project, const COOKIE_PROCESS_ID = "cookies:tok:sortugdev.os";
comment out the following 2 lines: const PROXY_PROCESS_ID = "proxy:tok:sortugdev.os";
*/
import manifest from '../pkg/manifest.json'
import metadata from '../metadata.json'
/*
IMPORTANT:
This must match the process name from pkg/manifest.json + pkg/metadata.json
The format is "/" + "process_name:package_name:publisher_node"
*/
const BASE_URL = `/${manifest[0].process_name}:${metadata.properties.package_name}:${metadata.properties.publisher}`;
// This is the proxy URL, it must match the node you are developing against // This is the proxy URL, it must match the node you are developing against
const PROXY_URL = (process.env.VITE_NODE_URL || 'http://127.0.0.1:8080').replace('localhost', '127.0.0.1'); const PROXY_URL = (
process.env.VITE_NODE_URL || "http://127.0.0.1:8080"
).replace("localhost", "127.0.0.1");
console.log('process.env.VITE_NODE_URL', process.env.VITE_NODE_URL, PROXY_URL); console.log("process.env.VITE_NODE_URL", process.env.VITE_NODE_URL, PROXY_URL);
export default defineConfig({ export default defineConfig({
plugins: [react()], plugins: [react()],
base: BASE_URL, base: BASE_URL,
build: { build: {
rollupOptions: { rollupOptions: {
external: ['/our.js'] external: ["/our.js"],
} },
}, },
server: { server: {
open: true, open: true,
proxy: { proxy: {
'/our': { "^.*": {
target: PROXY_URL,
changeOrigin: true,
},
[`${BASE_URL}/our.js`]: {
target: PROXY_URL,
changeOrigin: true,
rewrite: (path) => path.replace(BASE_URL, ''),
},
// This route will match all other HTTP requests to the backend
[`^${BASE_URL}/(?!(@vite/client|src/.*|node_modules/.*|@react-refresh|$))`]: {
target: PROXY_URL, target: PROXY_URL,
changeOrigin: true, changeOrigin: true,
}, },
// "/our": {
// target: PROXY_URL,
// changeOrigin: true,
// },
// [`^/${COOKIE_PROCESS_ID}/api.*`]: {
// target: PROXY_URL,
// changeOrigin: true,
// rewrite: (path) => path.replace(COOKIE_PROCESS_ID, ""),
// },
// [`/${PROXY_PROCESS_ID}`]: {
// target: PROXY_URL,
// changeOrigin: true,
// rewrite: (path) => path.replace(PROXY_PROCESS_ID, ""),
// },
// [`${BASE_URL}/our.js`]: {
// target: PROXY_URL,
// changeOrigin: true,
// rewrite: (path) => path.replace(BASE_URL, ""),
// },
// // This route will match all other HTTP requests to the backend
// [`^${BASE_URL}/(?!(@vite/client|src/.*|node_modules/.*|@react-refresh|$))`]:
// {
// target: PROXY_URL,
// changeOrigin: true,
// },
// '/example': { // '/example': {
// target: PROXY_URL, // target: PROXY_URL,
// changeOrigin: true, // changeOrigin: true,
@ -62,6 +69,6 @@ export default defineConfig({
// }); // });
// }, // },
// }, // },
} },
} },
}); });