Skip to content

Commit

Permalink
docs(changeset): fix types and unnecessary comments
Browse files Browse the repository at this point in the history
  • Loading branch information
nksaraf committed Sep 23, 2023
1 parent 9f5d4cb commit 5bf5e03
Show file tree
Hide file tree
Showing 10 changed files with 90 additions and 208 deletions.
5 changes: 5 additions & 0 deletions .changeset/itchy-parrots-rush.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"vinxi": patch
---

fix types and unnecessary comments
144 changes: 5 additions & 139 deletions packages/vinxi/lib/app-worker-client.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,42 +7,6 @@ import invariant from "./invariant.js";

const require = createRequire(import.meta.url);

// TODO: Use something other than JSON for worker communication.
/**
* Create a worker thread that will be used to render RSC chunks.
* @param {string} buildPath Absolute path to the the built RSC bundle.
* @param {() => void} onReload Called when the worker reloads.
*/

// class WorkerReadableStream extends Readable {
// constructor(worker) {
// super({ objectMode: true });
// this.worker = worker;
// this.worker.on('message', this.handleWorkerMessage.bind(this));
// this.worker.on('error', this.handleWorkerError.bind(this));
// this.worker.on('exit', this.handleWorkerExit.bind(this));
// }

// _read() {
// // Do nothing since we are listening to worker messages
// }

// handleWorkerMessage(message) {
// // Push the received message to the stream
// this.push({ chunk: message });
// }

// handleWorkerError(err) {
// // Emit the error event if any error occurs
// this.emit('error', err);
// }

// handleWorkerExit(code) {
// // If the worker exits, end the stream by pushing the "end" chunk
// this.push({ chunk: 'end' });
// }
// }

export class AppWorkerClient {
/** @type {import('node:worker_threads').Worker | null} */
worker = null;
Expand All @@ -51,6 +15,11 @@ export class AppWorkerClient {
responses = new Map();

url;

/**
*
* @param {string} url
*/
constructor(url) {
this.url = url;
}
Expand Down Expand Up @@ -180,106 +149,3 @@ export class AppWorkerClient {
}
}
}

// export async function createComponentServerWorker(buildPath, onReload) {
// const worker = new Worker(
// require.resolve("../src/component-server/node-worker.js"),
// {
// execArgv: ["--conditions", "react-server"],
// env: {
// COMPONENT_SERVER_WORKER: "true",
// // DEBUG: "vite:*",
// DEBUG: process.env.DEBUG,
// DEBUG_COLORS: process.env.DEBUG_COLORS,
// NODE_ENV: process.env.NODE_ENV ?? "production",
// MINIFY: process.argv.includes("--minify") ? "true" : "false",
// },
// workerData: {
// buildPath,
// },
// },
// );

// await new Promise((resolve, reject) =>
// worker.once("message", (event) => {
// if (event === "ready") {
// resolve(undefined);
// } else {
// reject(new Error("rsc worker failed to start"));
// }
// }),
// );

// /** @type {Map<string, (event: any) => void>} */
// const responses = new Map();
// const encoder = new TextEncoder();
// worker.on("message", (msg) => {
// const { id, ...event } = JSON.parse(msg);
// if (event.type === "reload") {
// onReload();
// return;
// }

// const res = responses.get(id);
// invariant(res, `No response handler for id ${id}`);
// res(event);
// });

// worker.once("exit", (code) => {
// console.log("Component server worker exited with code", code);
// process.exit(code);
// });

// return {
// /**
// *
// * @param {string} component
// * @param {any} props
// * @returns {ReadableStream<Uint8Array>}
// */
// renderToReadableStream(component, props) {
// const id = Math.random() + "";
// worker.postMessage(
// JSON.stringify({
// component,
// props,
// type: "render",
// id,
// }),
// );

// return new ReadableStream({
// start(controller) {
// responses.set(id, ({ chunk }) => {
// if (chunk === "end") {
// controller.close();
// responses.delete(id);
// return;
// }

// if (chunk) controller.enqueue(encoder.encode(chunk));
// });
// },
// });
// },
// build: () => {
// return new Promise((resolve) => {
// const id = Math.random() + "";
// responses.set(id, ({ status }) => {
// if (status === "built") {
// resolve("");
// }
// });
// worker.postMessage(
// JSON.stringify({
// type: "build",
// id,
// }),
// );
// });
// },
// close: () => {
// worker.unref();
// },
// };
// // }
4 changes: 2 additions & 2 deletions packages/vinxi/lib/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ const routerSchema = {
* @param {number} order
* @returns {RouterSchema}
*/
function resolveConfig(router, appConfig, order) {
function resolveRouterConfig(router, appConfig, order) {
const appRoot = appConfig.root ?? process.cwd();
const root = router.root ?? appRoot;
switch (router.mode) {
Expand Down Expand Up @@ -200,7 +200,7 @@ export function createApp({

const resolvedRouters = routers.map((router, index) => {
return {
...resolveConfig(
...resolveRouterConfig(
router,
{
name: name ?? "vinxi",
Expand Down
92 changes: 54 additions & 38 deletions packages/vinxi/lib/nitro-dev.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ import {
createApp,
eventHandler,
fromNodeMiddleware,
promisifyNodeListener,
toNodeListener,
} from "h3";
import httpProxy from "http-proxy";
// import httpProxy from "http-proxy";
import { listen } from "listhen";
import { resolve } from "pathe";
import { servePlaceholder } from "serve-placeholder";
Expand Down Expand Up @@ -84,6 +85,11 @@ import { accessSync } from "node:fs";
// }
// }

/**
*
* @param {import("nitropack").Nitro} nitro
* @returns
*/
export function createDevServer(nitro) {
// Worker
// const workerEntry = resolve(
Expand Down Expand Up @@ -131,7 +137,10 @@ export function createDevServer(nitro) {

// Serve asset dirs
for (const asset of nitro.options.publicAssets) {
const url = joinURL(nitro.options.runtimeConfig.app.baseURL, asset.baseURL);
const url = joinURL(
nitro.options.runtimeConfig.app.baseURL,
asset.baseURL ?? "/",
);
app.use(url, fromNodeMiddleware(serveStatic(asset.dir)));
if (!asset.fallthrough) {
app.use(url, fromNodeMiddleware(servePlaceholder()));
Expand All @@ -144,19 +153,19 @@ export function createDevServer(nitro) {
}

// User defined dev proxy
for (const route of Object.keys(nitro.options.devProxy).sort().reverse()) {
let opts = nitro.options.devProxy[route];
if (typeof opts === "string") {
opts = { target: opts };
}
const proxy = createProxy(opts);
app.use(
route,
eventHandler(async (event) => {
await proxy.handle(event);
}),
);
}
// for (const route of Object.keys(nitro.options.devProxy).sort().reverse()) {
// let opts = nitro.options.devProxy[route];
// if (typeof opts === "string") {
// opts = { target: opts };
// }
// const proxy = createProxy(opts);
// app.use(
// route,
// eventHandler(async (event) => {
// await proxy.handle(event);
// }),
// );
// }

// Main worker proxy
// const proxy = createProxy();
Expand Down Expand Up @@ -206,7 +215,14 @@ export function createDevServer(nitro) {
// );

// Listen
/** @type {import("listhen").Listener[]} */
let listeners = [];
/**
*
* @param {number} port
* @param {Partial<import("listhen").ListenOptions>} opts
* @returns
*/
const _listen = async (port, opts) => {
const listener = await listen(toNodeListener(app), { port, ...opts });
listeners.push(listener);
Expand All @@ -232,7 +248,7 @@ export function createDevServer(nitro) {
nitro.hooks.hook("close", close);

// Create local fetch callers
const localCall = createCall(toNodeListener(app));
const localCall = createCall(promisifyNodeListener(toNodeListener(app)));
const localFetch = createLocalFetch(localCall, globalThis.fetch);

return {
Expand All @@ -246,25 +262,25 @@ export function createDevServer(nitro) {
};
}

function createProxy(defaults = {}) {
const proxy = httpProxy.createProxy();
const handle = (event, opts = {}) => {
return new Promise((resolve, reject) => {
proxy.web(
event.node.req,
event.node.res,
{ ...defaults, ...opts },
(error) => {
if (error.code !== "ECONNRESET") {
reject(error);
}
resolve();
},
);
});
};
return {
proxy,
handle,
};
}
// function createProxy(defaults = {}) {
// const proxy = httpProxy.createProxy();
// const handle = (event, opts = {}) => {
// return new Promise((resolve, reject) => {
// proxy.web(
// event.node.req,
// event.node.res,
// { ...defaults, ...opts },
// (error) => {
// if (error.code !== "ECONNRESET") {
// reject(error);
// }
// resolve();
// },
// );
// });
// };
// return {
// proxy,
// handle,
// };
// }
2 changes: 1 addition & 1 deletion packages/vinxi/lib/plugins/virtual.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ export function virtual(modules, name = "", cache = {}) {

/** @type {import('../vite-dev.d.ts').ViteConfig} */
let config;
/** @type {import('vite').ConfigEnv} */
/** @type {import('../vite-dev.d.ts').ConfigEnv} */
let env;

return {
Expand Down
14 changes: 2 additions & 12 deletions packages/vinxi/lib/vite-dev.d.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,4 @@
// declare module "vite" {
// // interface UserConfig {
// // router: any;
// // }
// }
import {
ConfigEnv,
UserConfig,
Plugin as VitePlugin,
ResolvedConfig as _ResolvedConfig,
} from "vite";
import { Plugin as VitePlugin, ResolvedConfig as _ResolvedConfig } from "vite";

import { RouterSchema } from "./app";

Expand All @@ -26,4 +16,4 @@ export type ViteConfig = _ResolvedConfig & { router: RouterSchema };

export type Plugin = VitePlugin;

export { ConfigEnv } from "vite";
export type { ConfigEnv as ConfigEnv } from "vite";
1 change: 1 addition & 0 deletions packages/vinxi/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
"@babel/plugin-syntax-jsx": "^7.22.5",
"@babel/plugin-syntax-typescript": "^7.22.5",
"@types/micromatch": "^4.0.2",
"@types/serve-static": "^1.15.2",
"c12": "^1.4.2",
"chokidar": "^3.5.3",
"consola": "^3.2.3",
Expand Down
Loading

0 comments on commit 5bf5e03

Please sign in to comment.