wip fix
This commit is contained in:
parent
011aeabf44
commit
3dc25a8447
|
|
@ -15,7 +15,6 @@ RUN echo $DATABASE_URL
|
||||||
# RUN npm install -g node-gyp
|
# RUN npm install -g node-gyp
|
||||||
# RUN npm install -g node-gyp-build-optional-packages
|
# RUN npm install -g node-gyp-build-optional-packages
|
||||||
|
|
||||||
|
|
||||||
# RUN curl -fsSL https://bun.sh/install | bash -s "bun-v1.0.18"
|
# RUN curl -fsSL https://bun.sh/install | bash -s "bun-v1.0.18"
|
||||||
# RUN ln -s $HOME/.bun/bin/bun /usr/local/bin/bun
|
# RUN ln -s $HOME/.bun/bin/bun /usr/local/bin/bun
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,96 +11,101 @@ export const apiProxy = (api_url: string) => {
|
||||||
w.prasiApi = {};
|
w.prasiApi = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
const base = new URL(api_url);
|
try {
|
||||||
const base_url = `${base.protocol}//${base.host}`;
|
const base = new URL(api_url);
|
||||||
if (!w.prasiApi[base_url]) {
|
const base_url = `${base.protocol}//${base.host}`;
|
||||||
if (!apiProxyLoaded[base_url]) {
|
if (!w.prasiApi[base_url]) {
|
||||||
apiProxyLoaded[base_url] = loadApiProxyDef(base_url, true);
|
if (!apiProxyLoaded[base_url]) {
|
||||||
|
apiProxyLoaded[base_url] = loadApiProxyDef(base_url, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return new Proxy(
|
return new Proxy(
|
||||||
{},
|
{},
|
||||||
{
|
{
|
||||||
get: (_, actionName: string) => {
|
get: (_, actionName: string) => {
|
||||||
const createFn = (actionName: string) => {
|
const createFn = (actionName: string) => {
|
||||||
return function (
|
return function (
|
||||||
this: { api_url: string } | undefined,
|
this: { api_url: string } | undefined,
|
||||||
...rest: any
|
...rest: any
|
||||||
) {
|
) {
|
||||||
return new Promise<any>(async (resolve, reject) => {
|
return new Promise<any>(async (resolve, reject) => {
|
||||||
try {
|
try {
|
||||||
let api_ref = w.prasiApi[base_url];
|
let api_ref = w.prasiApi[base_url];
|
||||||
|
|
||||||
if (
|
if (
|
||||||
!api_ref &&
|
!api_ref &&
|
||||||
apiProxyLoaded &&
|
apiProxyLoaded &&
|
||||||
typeof apiProxyLoaded[base_url] === "object"
|
typeof apiProxyLoaded[base_url] === "object"
|
||||||
) {
|
) {
|
||||||
await apiProxyLoaded[base_url];
|
await apiProxyLoaded[base_url];
|
||||||
api_ref = w.prasiApi[base_url];
|
api_ref = w.prasiApi[base_url];
|
||||||
}
|
|
||||||
|
|
||||||
if (api_ref) {
|
|
||||||
if (!api_ref.apiEntry) api_ref.apiEntry = {};
|
|
||||||
if (api_ref.apiEntry && !api_ref.apiEntry[actionName]) {
|
|
||||||
reject(
|
|
||||||
`API ${actionName.toString()} not found, existing API: \n - ${Object.keys(
|
|
||||||
api_ref || {}
|
|
||||||
).join("\n - ")}`
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
let actionUrl = api_ref.apiEntry[actionName].url;
|
if (api_ref) {
|
||||||
const actionParams = api_ref.apiEntry[actionName].args;
|
if (!api_ref.apiEntry) api_ref.apiEntry = {};
|
||||||
if (actionUrl && actionParams) {
|
if (api_ref.apiEntry && !api_ref.apiEntry[actionName]) {
|
||||||
if (rest.length > 0 && actionParams.length > 0) {
|
reject(
|
||||||
for (const [idx, p] of Object.entries(rest)) {
|
`API ${actionName.toString()} not found, existing API: \n - ${Object.keys(
|
||||||
const paramName = actionParams[parseInt(idx)];
|
api_ref || {}
|
||||||
if (actionParams && actionParams.includes(paramName)) {
|
).join("\n - ")}`
|
||||||
if (
|
);
|
||||||
!!p &&
|
return;
|
||||||
typeof p !== "string" &&
|
|
||||||
typeof p !== "number"
|
|
||||||
) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
actionUrl = actionUrl.replace(`:${paramName}?`, p + "");
|
|
||||||
actionUrl = actionUrl.replace(`:${paramName}`, p + "");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const url = `${base_url}${actionUrl}`;
|
let actionUrl = api_ref.apiEntry[actionName].url;
|
||||||
|
const actionParams = api_ref.apiEntry[actionName].args;
|
||||||
|
if (actionUrl && actionParams) {
|
||||||
|
if (rest.length > 0 && actionParams.length > 0) {
|
||||||
|
for (const [idx, p] of Object.entries(rest)) {
|
||||||
|
const paramName = actionParams[parseInt(idx)];
|
||||||
|
if (actionParams && actionParams.includes(paramName)) {
|
||||||
|
if (
|
||||||
|
!!p &&
|
||||||
|
typeof p !== "string" &&
|
||||||
|
typeof p !== "number"
|
||||||
|
) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
actionUrl = actionUrl.replace(`:${paramName}?`, p + "");
|
||||||
|
actionUrl = actionUrl.replace(`:${paramName}`, p + "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const result = await fetchSendApi(url, rest);
|
const url = `${base_url}${actionUrl}`;
|
||||||
resolve(result);
|
|
||||||
} else {
|
const result = await fetchSendApi(url, rest);
|
||||||
console.error(`API Not Found: ${actionName.toString()}`);
|
resolve(result);
|
||||||
|
} else {
|
||||||
|
console.error(`API Not Found: ${actionName.toString()}`);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
reject(e);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
});
|
||||||
reject(e);
|
};
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
};
|
if (actionName === "then") {
|
||||||
if (actionName === "then") {
|
return new Proxy(
|
||||||
return new Proxy(
|
{},
|
||||||
{},
|
{
|
||||||
{
|
get: (_, actionName: string) => {
|
||||||
get: (_, actionName: string) => {
|
return createFn(actionName);
|
||||||
return createFn(actionName);
|
},
|
||||||
},
|
}
|
||||||
}
|
);
|
||||||
);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return createFn(actionName);
|
return createFn(actionName);
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
} catch (e) {
|
||||||
|
console.warn("Init API failed for URL: ", JSON.stringify(api_url));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const fetchSendApi = async (url: string, params: any) => {
|
const fetchSendApi = async (url: string, params: any) => {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { FC, ReactNode } from "react";
|
import { FC, ReactNode, useEffect, useState } from "react";
|
||||||
import { useGlobal, useLocal } from "web-utils";
|
import { useGlobal, useLocal } from "web-utils";
|
||||||
import { IMeta } from "../../ed/logic/ed-global";
|
import { IMeta } from "../../ed/logic/ed-global";
|
||||||
import { ViGlobal } from "./global";
|
import { ViGlobal } from "./global";
|
||||||
|
|
@ -12,8 +12,10 @@ export const ViScript: FC<{
|
||||||
passprop?: any;
|
passprop?: any;
|
||||||
}> = ({ meta, children, passprop }) => {
|
}> = ({ meta, children, passprop }) => {
|
||||||
const vi = useGlobal(ViGlobal, "VI");
|
const vi = useGlobal(ViGlobal, "VI");
|
||||||
const local = useLocal({});
|
const [_, _set] = useState({});
|
||||||
meta.render = local.render;
|
meta.render = () => {
|
||||||
|
_set({});
|
||||||
|
};
|
||||||
|
|
||||||
let _pass = passprop;
|
let _pass = passprop;
|
||||||
if (meta.item.component?.id) {
|
if (meta.item.component?.id) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue