add outer/inner debugging

This commit is contained in:
Seth Trowbridge 2024-04-23 12:44:22 -04:00
parent bef45f9107
commit 9d31b9a08c
7 changed files with 40 additions and 48 deletions

9
.vscode/launch.json vendored
View File

@ -5,13 +5,18 @@
"version": "0.2.0", "version": "0.2.0",
"configurations": [ "configurations": [
{ {
"name": "Host Process",
"request": "launch", "request": "launch",
"name": "Debug Serve Mode",
"type": "node", "type": "node",
"cwd": "${workspaceFolder}/example",
"runtimeExecutable": "deno", "runtimeExecutable": "deno",
"runtimeArgs": ["task", "debug"], "runtimeArgs": ["task", "debug"],
"attachSimplePort": 9229 "attachSimplePort": 9229
},
{
"name": "Subprocess",
"request": "attach",
"type": "node",
"port": 9230
} }
] ]
} }

View File

@ -1,3 +0,0 @@
{
"deno.enable": true
}

View File

@ -167,9 +167,9 @@ export async function Check()
const importMap = imports.json.imports as Record<string, string>; const importMap = imports.json.imports as Record<string, string>;
const bake =async(obj:ConfigCheck)=> await Deno.writeTextFile(Deno.cwd()+"/"+obj.path, JSON.stringify(obj.json, null, "\t")); const bake =async(obj:ConfigCheck)=> await Deno.writeTextFile(Deno.cwd()+"/"+obj.path, JSON.stringify(obj.json, null, "\t"));
importMap["react"] = `https://esm.sh/preact@10.18.1/compat`; importMap["react"] = `https://esm.sh/preact@10.18.2/compat`;
importMap["react/"] = `https://esm.sh/preact@10.18.1/compat/`; importMap["react/"] = `https://esm.sh/preact@10.20.2/compat/`;
importMap["@preact/signals"] = `https://esm.sh/@preact/signals@1.2.1`; importMap["@preact/signals"] = `https://esm.sh/@preact/signals@1.2.3`;
importMap["@twind/core"] = `https://esm.sh/@twind/core@1.1.3`; importMap["@twind/core"] = `https://esm.sh/@twind/core@1.1.3`;
importMap[">able/"] = `${RootHost}`; importMap[">able/"] = `${RootHost}`;
if(!importMap[">able/app.tsx"]) if(!importMap[">able/app.tsx"])

View File

@ -87,7 +87,7 @@ if(arg._.length)
} }
case "debug" : case "debug" :
{ {
await SubProcess(["run", `-A`, `--no-lock`, `--config=${config.path}`, `--inspect-brk`, RootHost+"run.tsx", "--dev", ...Deno.args]); await SubProcess(["run", `-A`, `--no-lock`, `--config=${config.path}`, `--inspect-wait=127.0.0.1:9230`, RootHost+"run.tsx", "--dev", ...Deno.args]);
break; break;
} }
case "serve" : case "serve" :

View File

@ -6,17 +6,17 @@
"@preact/signals": "https://esm.sh/@preact/signals@1.2.1", "@preact/signals": "https://esm.sh/@preact/signals@1.2.1",
"signals-original": "https://esm.sh/@preact/signals@1.2.1", "signals-original": "https://esm.sh/@preact/signals@1.2.1",
"@twind/core": "https://esm.sh/@twind/core@1.1.3", "@twind/core": "https://esm.sh/@twind/core@1.1.3",
">able/": "http://localhost:4507/", ">able/": "./",
">able/app.tsx": "./app.tsx" ">able/app.tsx": "./app.tsx"
}, },
"tasks": { "tasks": {
"check": "deno run -A --no-lock http://localhost:4507/cli.tsx check", "check": "deno run -A --no-lock ./cli.tsx check",
"local": "deno run -A --no-lock http://localhost:4507/cli.tsx local", "local": "deno run -A --no-lock ./cli.tsx local",
"debug": "deno run -A --no-lock http://localhost:4507/cli.tsx debug", "debug": "deno run -A --no-lock --inspect-wait=127.0.0.1:9229 ./cli.tsx debug",
"serve": "deno run -A --no-lock http://localhost:4507/cli.tsx serve", "serve": "deno run -A --no-lock ./cli.tsx serve",
"cloud": "deno run -A --no-lock http://localhost:4507/cli.tsx cloud", "cloud": "deno run -A --no-lock ./cli.tsx cloud",
"baker": "deno run -A --no-lock http://localhost:4507/cli.tsx baker", "baker": "deno run -A --no-lock ./cli.tsx baker",
"install": "deno install -A -r -f -n able http://localhost:4507/cli.tsx" "install": "deno install -A -r -f -n able ./cli.tsx"
}, },
"compilerOptions": { "compilerOptions": {
"jsx": "react-jsx", "jsx": "react-jsx",

View File

@ -1,20 +0,0 @@
{
"compilerOptions": { "lib": ["deno.window", "dom"],
"jsx": "react-jsx",
"jsxImportSource": "react"
},
"imports":
{
"react":"https://esm.sh/preact@10.15.1/compat",
"react/":"https://esm.sh/preact@10.15.1/compat/",
"react-original":"https://esm.sh/preact@10.15.1/compat",
},
"tasks":
{
"local": "deno run -A --reload=http://localhost:4507 --no-lock ./run-local.tsx --port=1234",
"serve": "deno run -A --reload=http://localhost:4507 --no-lock ./run-serve.tsx --port=1234",
"cloud": "deno run -A --reload=http://localhost:4507 --no-lock ./run-deploy.tsx",
"debug": "deno run -A --reload=http://localhost:4507 --no-lock --inspect-wait ./run-serve.tsx --port=1234",
}
}

View File

@ -1,5 +1,5 @@
import * as MIME from "https://deno.land/std@0.180.0/media_types/mod.ts"; import * as MIME from "https://deno.land/std@0.180.0/media_types/mod.ts";
import * as SWCW from "https://esm.sh/@swc/wasm-web@1.3.62"; import * as SWCW from "https://esm.sh/@swc/wasm-web@1.4.17";
import { HuntConfig } from "./checker.tsx"; import { HuntConfig } from "./checker.tsx";
import CustomServe from ">able/api.tsx"; import CustomServe from ">able/api.tsx";
@ -9,6 +9,12 @@ type DenoConfig = {imports:Record<string, string>};
const ImportMap:DenoConfig = {imports:{}}; const ImportMap:DenoConfig = {imports:{}};
let ImportMapProxies:Record<string, string> = {}; let ImportMapProxies:Record<string, string> = {};
// (re)scan the project directory looking for the config
// process the found import map:
// - make a copy of the import map
// - change root relative imports that deno needs (starts with "./") to "/" for use in the browser
// - change
const ImportMapReload =async()=> const ImportMapReload =async()=>
{ {
const [, {json, path}] = await HuntConfig(); const [, {json, path}] = await HuntConfig();
@ -39,7 +45,6 @@ const ImportMapReload =async()=>
}); });
ImportMap.imports = Configuration.Remap(imports, Configuration); ImportMap.imports = Configuration.Remap(imports, Configuration);
} }
else else
{ {
@ -162,6 +167,7 @@ export const Configure =(config:ConfigurationArgs)=>
} }
let running = false; let running = false;
export default async()=> export default async()=>
{ {
@ -185,6 +191,7 @@ export default async()=>
const headers = {"content-type":"application/json", "Access-Control-Allow-Origin": Configuration.Allow, "charset":"UTF-8"}; const headers = {"content-type":"application/json", "Access-Control-Allow-Origin": Configuration.Allow, "charset":"UTF-8"};
let proxy = Root + url.pathname; let proxy = Root + url.pathname;
// dont serve hidden files (end file or folder names with "__" to hide)
if(url.pathname.includes("__/") || url.pathname.lastIndexOf("__.") > -1) if(url.pathname.includes("__/") || url.pathname.lastIndexOf("__.") > -1)
{ {
return new Response(`{"error":"unmatched route", "path":"${url.pathname}"}`, {status:404, headers}); return new Response(`{"error":"unmatched route", "path":"${url.pathname}"}`, {status:404, headers});
@ -193,20 +200,23 @@ export default async()=>
// proxy imports // proxy imports
if(url.pathname.startsWith(encodeURI("/>"))) if(url.pathname.startsWith(encodeURI("/>")))
{ {
console.log(ImportMapProxies);
console.log("checking for", url.pathname)
let bestMatch=""; let bestMatch="";
for(let key in ImportMapProxies) for(const key in ImportMapProxies)
{ {
if(url.pathname.startsWith(key) && key.length > bestMatch.length) const match = url.pathname.startsWith(key) && key.length > bestMatch.length;
console.log(`key:${key} match:${match}`);
if(match)
{ {
bestMatch = key; bestMatch = key;
} }
} }
if(bestMatch.length) if(bestMatch.length)
{ {
const match = ImportMapProxies[bestMatch]; const value = ImportMapProxies[bestMatch];
const path = url.pathname.substring(bestMatch.length); const path = url.pathname.substring(bestMatch.length);
proxy = path ? match + path : Root + match; proxy = path ? value + path : Root + value;
} }
} }