Skip to content

Commit

Permalink
chore: edit package.json
Browse files Browse the repository at this point in the history
  • Loading branch information
magne4000 committed Jul 17, 2024
1 parent f14c17b commit 5891cad
Show file tree
Hide file tree
Showing 9 changed files with 150 additions and 10 deletions.
63 changes: 61 additions & 2 deletions examples/tool/package.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,72 @@
{
"name": "@universal-middleware/example-tool",
"name": "@universal-middleware-examples/tool",
"version": "0.0.0",
"private": true,
"type": "module",
"files": [
"dist"
],
"exports": {
".": "./dist/index.js"
"./dummy-handler": {
"types": "dist/dummy.d.ts",
"import": "dist/dummy.js",
"default": "dist/dummy.js"
},
"./middlewares/context-middleware": {
"types": "dist/middlewares/context.d.ts",
"import": "dist/middlewares/context.js",
"default": "dist/middlewares/context.js"
},
"./middlewares/headers-middleware": {
"types": "dist/middlewares/headers.d.ts",
"import": "dist/middlewares/headers.js",
"default": "dist/middlewares/headers.js"
},
"./dummy-handler-hono": {
"types": "dist/handlers/universal-hono-handler-handler.d.ts",
"import": "dist/handlers/universal-hono-handler-handler.js",
"default": "dist/handlers/universal-hono-handler-handler.js"
},
"./dummy-handler-express": {
"types": "dist/handlers/universal-express-handler-handler.d.ts",
"import": "dist/handlers/universal-express-handler-handler.js",
"default": "dist/handlers/universal-express-handler-handler.js"
},
"./dummy-handler-hattip": {
"types": "dist/handlers/universal-hattip-handler-handler.d.ts",
"import": "dist/handlers/universal-hattip-handler-handler.js",
"default": "dist/handlers/universal-hattip-handler-handler.js"
},
"./middlewares/context-middleware-hono": {
"types": "dist/middlewares/universal-hono-middleware-context.middleware.d.ts",
"import": "dist/middlewares/universal-hono-middleware-context.middleware.js",
"default": "dist/middlewares/universal-hono-middleware-context.middleware.js"
},
"./middlewares/context-middleware-express": {
"types": "dist/middlewares/universal-express-middleware-context.middleware.d.ts",
"import": "dist/middlewares/universal-express-middleware-context.middleware.js",
"default": "dist/middlewares/universal-express-middleware-context.middleware.js"
},
"./middlewares/context-middleware-hattip": {
"types": "dist/middlewares/universal-hattip-middleware-context.middleware.d.ts",
"import": "dist/middlewares/universal-hattip-middleware-context.middleware.js",
"default": "dist/middlewares/universal-hattip-middleware-context.middleware.js"
},
"./middlewares/headers-middleware-hono": {
"types": "dist/middlewares/universal-hono-middleware-headers.middleware.d.ts",
"import": "dist/middlewares/universal-hono-middleware-headers.middleware.js",
"default": "dist/middlewares/universal-hono-middleware-headers.middleware.js"
},
"./middlewares/headers-middleware-express": {
"types": "dist/middlewares/universal-express-middleware-headers.middleware.d.ts",
"import": "dist/middlewares/universal-express-middleware-headers.middleware.js",
"default": "dist/middlewares/universal-express-middleware-headers.middleware.js"
},
"./middlewares/headers-middleware-hattip": {
"types": "dist/middlewares/universal-hattip-middleware-headers.middleware.d.ts",
"import": "dist/middlewares/universal-hattip-middleware-headers.middleware.js",
"default": "dist/middlewares/universal-hattip-middleware-headers.middleware.js"
}
},
"author": "Joël Charles <[email protected]>",
"repository": "https://github.com/magne4000/universal-handler",
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
"lint": "eslint --ext .js,.jsx,.ts,.tsx .",
"build:core": "pnpm run -r --filter \"@universal-middleware/*\" build",
"build:plugin": "pnpm run --filter \"universal-middleware\" build",
"build:examples": "pnpm run --filter \"./examples/**\" build",
"build:examples": "pnpm run --filter \"@universal-middleware-examples/*\" build",
"build": "run-s build:core build:plugin build:examples",
"test": "pnpm run -r --sequential test",
"test:typecheck": "pnpm run -r test:typecheck"
Expand Down
5 changes: 3 additions & 2 deletions packages/universal-middleware/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,12 @@
"test": "vitest run"
},
"dependencies": {
"unplugin": "^1.11.0",
"@universal-middleware/core": "^0.1.1",
"@universal-middleware/express": "^0.1.0",
"@universal-middleware/hattip": "^0.1.0",
"@universal-middleware/hono": "^0.1.1"
"@universal-middleware/hono": "^0.1.1",
"package-up": "^5.0.0",
"unplugin": "^1.11.0"
},
"devDependencies": {
"@rollup/plugin-node-resolve": "^15.2.3",
Expand Down
2 changes: 2 additions & 0 deletions packages/universal-middleware/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import rollup from "./rollup.js";
import esbuild from "./esbuild.js";

export { readAndEditPackageJson } from "./plugin.js";

export type * from "@universal-middleware/core";

export { rollup, esbuild };
45 changes: 45 additions & 0 deletions packages/universal-middleware/src/plugin.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
import { join, parse, posix, resolve } from "node:path";
import { type UnpluginFactory } from "unplugin";
import { packageUp } from "package-up";
import { readFile, writeFile } from "node:fs/promises";

export interface Options {
servers?: (typeof defaultWrappers)[number][];
serversExportNames?: string;
entryExportNames?: string;
ignoreRecommendations?: boolean;
doNotEditPackageJson?: boolean;
buildEnd?: (report: Report[]) => void | Promise<void>;
}

Expand Down Expand Up @@ -33,6 +36,7 @@ const externals = [
"@universal-middleware/hattip",
"@universal-middleware/hono",
];
const versionRange = "^0";

function getVirtualInputs(
type: "handler" | "middleware",
Expand Down Expand Up @@ -291,6 +295,37 @@ function genReport(bundle: Record<string, BundleInfo>) {
return reports;
}

export async function readAndEditPackageJson(reports: Report[]) {
const packageJsonPath = await packageUp();

if (!packageJsonPath) {
throw new Error("Cannot find package.json");
}

const packageJson = JSON.parse(await readFile(packageJsonPath, "utf8"));

packageJson.peerDependencies ??= {};
for (const external of externals) {
packageJson.peerDependencies[external] = versionRange;
}

packageJson.exports ??= {};

for (const report of reports) {
// No CJS support
packageJson.exports[report.exports] = {
types: report.out.replace(/\.js$/, ".d.ts"),
import: report.out,
default: report.out,
};
}

return {
path: packageJsonPath,
packageJson,
};
}

const universalMiddleware: UnpluginFactory<Options | undefined, boolean> = (
options?: Options,
) => {
Expand Down Expand Up @@ -363,6 +398,11 @@ const universalMiddleware: UnpluginFactory<Options | undefined, boolean> = (

const report = genReport(mapping);

if (!options?.doNotEditPackageJson) {
const { path, packageJson } = await readAndEditPackageJson(report);
await writeFile(path, JSON.stringify(packageJson, undefined, 2));
}

await options?.buildEnd?.(report);
},
},
Expand Down Expand Up @@ -490,6 +530,11 @@ const universalMiddleware: UnpluginFactory<Options | undefined, boolean> = (

const report = genReport(mapping);

if (!options?.doNotEditPackageJson) {
const { path, packageJson } = await readAndEditPackageJson(report);
await writeFile(path, JSON.stringify(packageJson, undefined, 2));
}

await options?.buildEnd?.(report);
});
},
Expand Down
14 changes: 12 additions & 2 deletions packages/universal-middleware/test/esbuild.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ describe("esbuild", () => {
entryPoints: [{ out: "handler", in: entry }],
plugins: [
plugin({
doNotEditPackageJson: true,
buildEnd(report) {
console.log(report);
expect(report).toHaveLength(expectNbOutput(1));
const exports = report.map((r) => r.exports);

Expand Down Expand Up @@ -58,6 +58,7 @@ describe("esbuild", () => {
},
plugins: [
plugin({
doNotEditPackageJson: true,
buildEnd(report) {
expect(report).toHaveLength(expectNbOutput(2));
const exports = report.map((r) => r.exports);
Expand Down Expand Up @@ -108,6 +109,7 @@ describe("esbuild", () => {
entryPoints: [entry1, entry2],
plugins: [
plugin({
doNotEditPackageJson: true,
buildEnd(report) {
expect(report).toHaveLength(expectNbOutput(2));
const exports = report.map((r) => r.exports);
Expand Down Expand Up @@ -170,6 +172,7 @@ describe("esbuild", () => {
entryPoints: [entry1, entry2],
plugins: [
plugin({
doNotEditPackageJson: true,
buildEnd(report) {
expect(report).toHaveLength(expectNbOutput(2));
const exports = report.map((r) => r.exports);
Expand Down Expand Up @@ -232,6 +235,7 @@ describe("esbuild", () => {
entryPoints: [entry1, entry2],
plugins: [
plugin({
doNotEditPackageJson: true,
buildEnd(report) {
expect(report).toHaveLength(expectNbOutput(2));
const exports = report.map((r) => r.exports);
Expand Down Expand Up @@ -283,6 +287,7 @@ describe("esbuild", () => {
entryPoints: [entry1, entry2],
plugins: [
plugin({
doNotEditPackageJson: true,
servers: ["hono"],
buildEnd(report) {
expect(report).toHaveLength(4);
Expand Down Expand Up @@ -330,7 +335,11 @@ describe("esbuild", () => {
await expect(
build({
entryPoints: [entry1, entry2],
plugins: [plugin()],
plugins: [
plugin({
doNotEditPackageJson: true,
}),
],
outdir: "dist",
write: false,
metafile: true,
Expand All @@ -349,6 +358,7 @@ describe("esbuild", () => {
entryPoints: [entry1, entry2],
plugins: [
plugin({
doNotEditPackageJson: true,
serversExportNames: "[name]-[type]-[server]",
}),
],
Expand Down
6 changes: 6 additions & 0 deletions packages/universal-middleware/test/rollup.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ describe("rollup", () => {
input: entry,
plugins: [
plugin({
doNotEditPackageJson: true,
buildEnd(report) {
expect(report).toHaveLength(expectNbOutput(1));
const exports = report.map((r) => r.exports);
Expand Down Expand Up @@ -64,6 +65,7 @@ describe("rollup", () => {
},
plugins: [
plugin({
doNotEditPackageJson: true,
buildEnd(report) {
expect(report).toHaveLength(expectNbOutput(2));
const exports = report.map((r) => r.exports);
Expand Down Expand Up @@ -115,6 +117,7 @@ describe("rollup", () => {
input: [entry1, entry2],
plugins: [
plugin({
doNotEditPackageJson: true,
buildEnd(report) {
expect(report).toHaveLength(expectNbOutput(2));
const exports = report.map((r) => r.exports);
Expand Down Expand Up @@ -178,6 +181,7 @@ describe("rollup", () => {
input: [entry1, entry2],
plugins: [
plugin({
doNotEditPackageJson: true,
buildEnd(report) {
expect(report).toHaveLength(expectNbOutput(2));
const exports = report.map((r) => r.exports);
Expand Down Expand Up @@ -241,6 +245,7 @@ describe("rollup", () => {
input: [entry1, entry2],
plugins: [
plugin({
doNotEditPackageJson: true,
servers: ["hono"],
buildEnd(report) {
expect(report).toHaveLength(4);
Expand Down Expand Up @@ -291,6 +296,7 @@ describe("rollup", () => {
input: [entry1, entry2],
plugins: [
plugin({
doNotEditPackageJson: true,
serversExportNames: "[name]-[type]-[server]",
}),
nodeResolve(),
Expand Down
19 changes: 18 additions & 1 deletion pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions tests-examples/tests-tool/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "@universal-middleware/tests-tool",
"name": "@universal-middleware-tests/tool",
"version": "0.0.0",
"private": true,
"type": "module",
Expand All @@ -18,7 +18,7 @@
},
"devDependencies": {
"@types/node": "^20.14.10",
"@universal-middleware/example-tool": "workspace:*",
"@universal-middleware-examples/tool": "workspace:*",
"@universal-middleware/hono": "^0.1.1",
"hono": "^4.5.0",
"rimraf": "^6.0.0",
Expand Down

0 comments on commit 5891cad

Please sign in to comment.