From af037f62eb0df1333164cd629b3b739879bda83b Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 12 Aug 2022 11:35:29 +0100 Subject: [PATCH 1/3] chore: move middleware support into separate package --- .gitignore | 3 +- demos/middleware/middleware.ts | 2 +- demos/middleware/package.json | 1 + package-lock.json | 23 +++++++++-- packages/next/package.json | 38 +++++++++++++++++++ packages/next/src/index.ts | 1 + .../src/middleware/html-rewriter.ts | 0 .../{runtime => next}/src/middleware/index.ts | 0 .../src/middleware/request.ts | 2 +- .../src/middleware/response.ts | 0 packages/next/tsconfig.json | 12 ++++++ packages/runtime/package.json | 16 +------- packages/runtime/tsconfig.json | 2 - release-please-config.json | 3 +- 14 files changed, 78 insertions(+), 25 deletions(-) create mode 100644 packages/next/package.json create mode 100644 packages/next/src/index.ts rename packages/{runtime => next}/src/middleware/html-rewriter.ts (100%) rename packages/{runtime => next}/src/middleware/index.ts (100%) rename packages/{runtime => next}/src/middleware/request.ts (97%) rename packages/{runtime => next}/src/middleware/response.ts (100%) create mode 100644 packages/next/tsconfig.json diff --git a/.gitignore b/.gitignore index a14a02cedf..37fa1f60e3 100644 --- a/.gitignore +++ b/.gitignore @@ -146,8 +146,7 @@ Temporary Items .netlify demos/default/.next .parcel-cache -packages/runtime/lib -packages/runtime/dist-types +packages/*/lib # Cypress cypress/screenshots diff --git a/demos/middleware/middleware.ts b/demos/middleware/middleware.ts index 2d0b5ea1d5..0556e1645f 100644 --- a/demos/middleware/middleware.ts +++ b/demos/middleware/middleware.ts @@ -1,7 +1,7 @@ import { NextResponse } from 'next/server' import type { NextRequest } from 'next/server' -import { MiddlewareRequest } from '@netlify/plugin-nextjs/middleware' +import { MiddlewareRequest } from '@netlify/next' export async function middleware(req: NextRequest) { let response diff --git a/demos/middleware/package.json b/demos/middleware/package.json index 8cd8b13353..e34818bf73 100644 --- a/demos/middleware/package.json +++ b/demos/middleware/package.json @@ -10,6 +10,7 @@ }, "dependencies": { "@netlify/plugin-nextjs": "*", + "@netlify/next": "*", "next": "^12.2.0", "react": "18.0.0", "react-dom": "18.0.0" diff --git a/package-lock.json b/package-lock.json index 5b6622d3c7..31eff71147 100644 --- a/package-lock.json +++ b/package-lock.json @@ -188,6 +188,7 @@ "demos/middleware": { "version": "0.1.0", "dependencies": { + "@netlify/next": "*", "@netlify/plugin-nextjs": "*", "next": "^12.2.0", "react": "18.0.0", @@ -4191,6 +4192,10 @@ "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.5.tgz", "integrity": "sha512-e4+UtA5IRO+ha6hYklwj6r7BjiGMxS0O+UaSg9HbaTefg4kMkzj4tXzEBajRR+wkxf+golgAWKzLbytCUDMJAA==" }, + "node_modules/@netlify/next": { + "resolved": "packages/next", + "link": true + }, "node_modules/@netlify/open-api": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/@netlify/open-api/-/open-api-2.11.0.tgz", @@ -22745,9 +22750,9 @@ } }, "packages/next": { + "name": "@netlify/next", "version": "0.0.1", - "extraneous": true, - "license": "ISC", + "license": "MIT", "devDependencies": { "@types/node": "^17.0.25", "next": "^12.2.0", @@ -22758,13 +22763,13 @@ "node": ">=12.0.0" }, "peerDependencies": { - "next": "*" + "next": ">=12.2.0" } }, "packages/runtime": { "name": "@netlify/plugin-nextjs", "version": "4.14.2", - "license": "ISC", + "license": "MIT", "dependencies": { "@netlify/functions": "^1.0.0", "@netlify/ipx": "^1.2.0", @@ -25643,6 +25648,15 @@ } } }, + "@netlify/next": { + "version": "file:packages/next", + "requires": { + "@types/node": "^17.0.25", + "next": "^12.2.0", + "npm-run-all": "^4.1.5", + "typescript": "^4.6.3" + } + }, "@netlify/open-api": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/@netlify/open-api/-/open-api-2.11.0.tgz", @@ -34912,6 +34926,7 @@ "middleware": { "version": "file:demos/middleware", "requires": { + "@netlify/next": "*", "@netlify/plugin-nextjs": "*", "@types/fs-extra": "^9.0.13", "@types/jest": "^27.4.1", diff --git a/packages/next/package.json b/packages/next/package.json new file mode 100644 index 0000000000..7f190b7b5a --- /dev/null +++ b/packages/next/package.json @@ -0,0 +1,38 @@ +{ + "name": "@netlify/next", + "version": "0.0.1", + "description": "Enhanced Next.js features on Netlify", + "main": "lib/index.js", + "files": [ + "lib/**/*" + ], + "devDependencies": { + "@types/node": "^17.0.25", + "next": "^12.2.0", + "npm-run-all": "^4.1.5", + "typescript": "^4.6.3" + }, + "scripts": { + "prepublishOnly": "run-s clean build", + "clean": "rimraf lib", + "build": "tsc", + "watch": "tsc --watch", + "prepare": "npm run build" + }, + "peerDependencies": { + "next": ">=12.2.0" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/netlify/netlify-plugin-nextjs.git" + }, + "author": "", + "license": "MIT", + "bugs": { + "url": "https://github.com/netlify/netlify-plugin-nextjs/issues" + }, + "homepage": "https://github.com/netlify/netlify-plugin-nextjs#readme", + "engines": { + "node": ">=12.0.0" + } +} \ No newline at end of file diff --git a/packages/next/src/index.ts b/packages/next/src/index.ts new file mode 100644 index 0000000000..9fece2f21e --- /dev/null +++ b/packages/next/src/index.ts @@ -0,0 +1 @@ +export * from './middleware' diff --git a/packages/runtime/src/middleware/html-rewriter.ts b/packages/next/src/middleware/html-rewriter.ts similarity index 100% rename from packages/runtime/src/middleware/html-rewriter.ts rename to packages/next/src/middleware/html-rewriter.ts diff --git a/packages/runtime/src/middleware/index.ts b/packages/next/src/middleware/index.ts similarity index 100% rename from packages/runtime/src/middleware/index.ts rename to packages/next/src/middleware/index.ts diff --git a/packages/runtime/src/middleware/request.ts b/packages/next/src/middleware/request.ts similarity index 97% rename from packages/runtime/src/middleware/request.ts rename to packages/next/src/middleware/request.ts index 360eb452c2..3b15ff039e 100644 --- a/packages/runtime/src/middleware/request.ts +++ b/packages/next/src/middleware/request.ts @@ -1,4 +1,4 @@ -import { NextURL } from 'next/dist/server/web/next-url' +import type { NextURL } from 'next/dist/server/web/next-url' import { NextResponse } from 'next/server' import type { NextRequest } from 'next/server' diff --git a/packages/runtime/src/middleware/response.ts b/packages/next/src/middleware/response.ts similarity index 100% rename from packages/runtime/src/middleware/response.ts rename to packages/next/src/middleware/response.ts diff --git a/packages/next/tsconfig.json b/packages/next/tsconfig.json new file mode 100644 index 0000000000..67a0d7b482 --- /dev/null +++ b/packages/next/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "declaration": true /* Generates corresponding '.d.ts' file. */, + "outDir": "./lib" /* Redirect output structure to the directory. */, + "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + }, + "include": [ + "src/**/*.ts", + "src/**/*.js" + ] +} \ No newline at end of file diff --git a/packages/runtime/package.json b/packages/runtime/package.json index 67aa13ee8c..6de072e0a4 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -6,20 +6,8 @@ "files": [ "lib/**/*", "src/templates/edge/*", - "manifest.yml", - "middleware.js" + "manifest.yml" ], - "typesVersions": { - "*": { - "middleware": [ - "dist-types/middleware" - ] - } - }, - "exports": { - ".": "./lib/index.js", - "./middleware": "./lib/middleware/index.js" - }, "dependencies": { "@netlify/functions": "^1.0.0", "@netlify/ipx": "^1.2.0", @@ -66,7 +54,7 @@ "url": "git+https://github.com/netlify/netlify-plugin-nextjs.git" }, "author": "", - "license": "ISC", + "license": "MIT", "bugs": { "url": "https://github.com/netlify/netlify-plugin-nextjs/issues" }, diff --git a/packages/runtime/tsconfig.json b/packages/runtime/tsconfig.json index e092b480fe..613e9aa2ac 100644 --- a/packages/runtime/tsconfig.json +++ b/packages/runtime/tsconfig.json @@ -2,8 +2,6 @@ "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "./lib" /* Redirect output structure to the directory. */, - "declaration": true /* Generates corresponding '.d.ts' file. */, - "declarationDir": "./dist-types", "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ }, "include": [ diff --git a/release-please-config.json b/release-please-config.json index 0f412d27b5..ff3da43f3d 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -1,6 +1,7 @@ { "bootstrap-sha": "62a4ce414f5b02f539902f88dd4b548df5cfa8ef", "packages": { - "packages/runtime": {} + "packages/runtime": {}, + "packages/next": {} } } From 789a8f1c93d291bc5498c13c554b5cc5453f40c9 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 12 Aug 2022 13:39:44 +0100 Subject: [PATCH 2/3] chore: add build command --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6ae091a322..c26dc6bbb7 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "format:check-fix:prettier": "run-e format:check:prettier format:fix:prettier", "format:check:prettier": "cross-env-shell prettier --check $npm_package_config_prettier", "format:fix:prettier": "cross-env-shell prettier --write $npm_package_config_prettier", - "build": "npm run -w @netlify/plugin-nextjs build", + "build": "npm run build -w packages/next -w packages/runtime", "postinstall": "run-s build install-husky", "install-husky": "if-env CI=1 || husky install node_modules/@netlify/eslint-config-node/.husky", "test": "run-s build:demo test:jest", From 692ea63f5c9c5a4f4acd8d6634a42b6e3c7c624c Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 12 Aug 2022 15:36:29 +0100 Subject: [PATCH 3/3] ci: update release please to publish more packages --- .github/workflows/release-please.yml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 81cb0c42fa..cd10794a06 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -28,15 +28,17 @@ jobs: if: ${{ steps.release.outputs.releases_created }} - name: Install dependencies run: CI=1 npm ci - working-directory: plugin - if: ${{ steps.release.outputs.releases_created }} - - run: npm publish - working-directory: plugin if: ${{ steps.release.outputs.releases_created }} + - run: npm publish packages/runtime/ + if: ${{ steps.release.outputs['packages/runtime--version'] }} + env: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} + - run: npm publish packages/next/ + if: ${{ steps.release.outputs['packages/next--version'] }} env: NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} - uses: netlify/submit-build-plugin-action@v1 - if: ${{ steps.release.outputs.releases_created }} + if: ${{ steps.release.outputs['packages/runtime--version'] }} with: github-token: ${{ steps.get-token.outputs.token }} - package-json-dir: plugin + package-json-dir: packages/runtime