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 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 4f82948f1f..e53fd7736e 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", @@ -25645,6 +25650,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", @@ -34919,6 +34933,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/package.json b/package.json index ca7e020317..32c04025fc 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", 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 32076f9c33..a0525c92b9 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": {} } }