From 02ab732096434364b6e191eedaacafa4db382ff7 Mon Sep 17 00:00:00 2001 From: Tim Neutkens Date: Mon, 14 Jan 2019 01:32:20 +0100 Subject: [PATCH] Remove next/asset (#6046) * Remove next/asset Reasoning described in #5970 * Remove next/asset tests * Bring back asset-page --- examples/with-zones/home/pages/about.js | 3 +- examples/with-zones/home/pages/index.js | 3 +- packages/next-server/asset.js | 1 - packages/next-server/lib/asset.js | 15 ----- packages/next-server/package.json | 1 - packages/next-server/server/next-server.ts | 2 - packages/next/asset.js | 1 - .../babel/plugins/next-to-next-server.ts | 3 - packages/next/export/index.js | 4 -- packages/next/package.json | 1 - .../basic/pages/using-asset/asset.js | 10 ---- .../basic/pages/using-asset/index.js | 9 --- test/integration/basic/test/asset.js | 57 ------------------- test/integration/basic/test/index.test.js | 2 - test/integration/custom-server/pages/asset.js | 4 +- .../custom-server/test/index.test.js | 34 +---------- test/integration/export/pages/asset.js | 7 --- test/integration/export/test/ssr.js | 6 -- 18 files changed, 5 insertions(+), 158 deletions(-) delete mode 100644 packages/next-server/asset.js delete mode 100644 packages/next-server/lib/asset.js delete mode 100644 packages/next/asset.js delete mode 100644 test/integration/basic/pages/using-asset/asset.js delete mode 100644 test/integration/basic/pages/using-asset/index.js delete mode 100644 test/integration/basic/test/asset.js delete mode 100644 test/integration/export/pages/asset.js diff --git a/examples/with-zones/home/pages/about.js b/examples/with-zones/home/pages/about.js index 513d4482..d1b7a165 100644 --- a/examples/with-zones/home/pages/about.js +++ b/examples/with-zones/home/pages/about.js @@ -1,4 +1,3 @@ -import asset from 'next/asset' import Link from 'next/link' export default () => ( @@ -9,6 +8,6 @@ export default () => ( Go Back - + ) diff --git a/examples/with-zones/home/pages/index.js b/examples/with-zones/home/pages/index.js index 2d882b43..16831137 100644 --- a/examples/with-zones/home/pages/index.js +++ b/examples/with-zones/home/pages/index.js @@ -1,5 +1,4 @@ import Link from 'next/link' -import asset from 'next/asset' import dynamic from 'next/dynamic' const Header = dynamic(import('../components/Header')) @@ -18,6 +17,6 @@ export default () => ( About us - + ) diff --git a/packages/next-server/asset.js b/packages/next-server/asset.js deleted file mode 100644 index fd0bd5db..00000000 --- a/packages/next-server/asset.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./dist/lib/asset') diff --git a/packages/next-server/lib/asset.js b/packages/next-server/lib/asset.js deleted file mode 100644 index d3d1c4ab..00000000 --- a/packages/next-server/lib/asset.js +++ /dev/null @@ -1,15 +0,0 @@ -let assetPrefix = typeof window !== 'undefined' ? (window.__NEXT_DATA__.assetPrefix) : undefined - -export default function asset (path) { - // If the URL starts with http, we assume it's an - if (/^https?:\/\//.test(path)) { - return path - } - - const pathWithoutSlash = path.replace(/^\//, '') - return `${assetPrefix || ''}/static/${pathWithoutSlash}` -} - -export function setAssetPrefix (url) { - assetPrefix = url -} diff --git a/packages/next-server/package.json b/packages/next-server/package.json index 8ba23c93..022dcf7a 100644 --- a/packages/next-server/package.json +++ b/packages/next-server/package.json @@ -6,7 +6,6 @@ "files": [ "dist", "index.js", - "asset.js", "config.js", "constants.js", "dynamic.js", diff --git a/packages/next-server/server/next-server.ts b/packages/next-server/server/next-server.ts index 564d9234..2953ff32 100644 --- a/packages/next-server/server/next-server.ts +++ b/packages/next-server/server/next-server.ts @@ -11,7 +11,6 @@ import Router, {route, Route} from './router' import { isInternalUrl, isBlockedPage } from './utils' import loadConfig from 'next-server/next-config' import {PHASE_PRODUCTION_SERVER, BUILD_ID_FILE, CLIENT_STATIC_FILES_PATH, CLIENT_STATIC_FILES_RUNTIME} from 'next-server/constants' -import * as asset from '../lib/asset' import * as envConfig from '../lib/runtime-config' import {loadComponents} from './load-components' @@ -111,7 +110,6 @@ export default class Server { public setAssetPrefix(prefix?: string) { this.renderOpts.assetPrefix = prefix ? prefix.replace(/\/$/, '') : '' - asset.setAssetPrefix(this.renderOpts.assetPrefix) } // Backwards compatibility diff --git a/packages/next/asset.js b/packages/next/asset.js deleted file mode 100644 index 8164bb34..00000000 --- a/packages/next/asset.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('next-server/asset') diff --git a/packages/next/build/babel/plugins/next-to-next-server.ts b/packages/next/build/babel/plugins/next-to-next-server.ts index 96fbb4be..d2583856 100644 --- a/packages/next/build/babel/plugins/next-to-next-server.ts +++ b/packages/next/build/babel/plugins/next-to-next-server.ts @@ -7,9 +7,6 @@ export default function NextToNextServer (): PluginObj { visitor: { ImportDeclaration (path: NodePath) { const source = path.node.source.value - if (source === 'next/asset') { - path.node.source.value = 'next-server/asset' - } if (source === 'next/dynamic') { path.node.source.value = 'next-server/dynamic' } diff --git a/packages/next/export/index.js b/packages/next/export/index.js index bfe1da69..abcb0024 100644 --- a/packages/next/export/index.js +++ b/packages/next/export/index.js @@ -7,7 +7,6 @@ import { resolve, join } from 'path' import { existsSync, readFileSync } from 'fs' import loadConfig from 'next-server/next-config' import { PHASE_EXPORT, SERVER_DIRECTORY, PAGES_MANIFEST, CONFIG_FILE, BUILD_ID_FILE, CLIENT_STATIC_FILES_PATH } from 'next-server/constants' -import { setAssetPrefix } from 'next-server/asset' import * as envConfig from 'next-server/config' import createProgress from 'tty-aware-progress' @@ -104,9 +103,6 @@ export default async function (dir, options, configuration) { publicRuntimeConfig }) - // set the assetPrefix to use for 'next/asset' - setAssetPrefix(renderOpts.assetPrefix) - // We need this for server rendering the Link component. global.__NEXT_DATA__ = { nextExport: true diff --git a/packages/next/package.json b/packages/next/package.json index 45b30c3f..2144c6b8 100644 --- a/packages/next/package.json +++ b/packages/next/package.json @@ -10,7 +10,6 @@ "files": [ "dist", "app.js", - "asset.js", "babel.js", "client.js", "config.js", diff --git a/test/integration/basic/pages/using-asset/asset.js b/test/integration/basic/pages/using-asset/asset.js deleted file mode 100644 index 1dd2976c..00000000 --- a/test/integration/basic/pages/using-asset/asset.js +++ /dev/null @@ -1,10 +0,0 @@ -import asset from 'next/asset' - -export default () => ( -
- - - - -
-) diff --git a/test/integration/basic/pages/using-asset/index.js b/test/integration/basic/pages/using-asset/index.js deleted file mode 100644 index 9e1e3b56..00000000 --- a/test/integration/basic/pages/using-asset/index.js +++ /dev/null @@ -1,9 +0,0 @@ -import Link from 'next/link' - -export default () => ( -
- - Asset - -
-) diff --git a/test/integration/basic/test/asset.js b/test/integration/basic/test/asset.js deleted file mode 100644 index 4ac8f6e2..00000000 --- a/test/integration/basic/test/asset.js +++ /dev/null @@ -1,57 +0,0 @@ -/* eslint-env jest */ -import cheerio from 'cheerio' -import { - renderViaHTTP -} from 'next-test-utils' -import webdriver from 'next-webdriver' - -export default (context) => { - async function get$ (path) { - const html = await renderViaHTTP(context.appPort, path) - return cheerio.load(html) - } - - describe('With next/asset', () => { - describe('with SSR', () => { - it('should handle beginning slash properly', async () => { - const $ = await get$('/using-asset/asset') - expect($('#img1').attr('src')).toBe('/static/the-image') - expect($('#img2').attr('src')).toBe('/static/the-image') - }) - - it('should handle http(s) properly', async () => { - const $ = await get$('/using-asset/asset') - expect($('#img3').attr('src')).toBe('http://the-image.com/the-image') - expect($('#img4').attr('src')).toBe('https://the-image.com/the-image') - }) - }) - - describe('with client navigation', () => { - it('should handle beginning slash properly', async () => { - const browser = await webdriver(context.appPort, '/using-asset') - await browser - .elementByCss('#go-asset').click() - .waitForElementByCss('#asset-page') - - expect(await browser.elementByCss('#img1').getAttribute('src')) - .toBe(`http://localhost:${context.appPort}/static/the-image`) - expect(await browser.elementByCss('#img2').getAttribute('src')) - .toBe(`http://localhost:${context.appPort}/static/the-image`) - browser.close() - }) - - it('should handle http(s) properly', async () => { - const browser = await webdriver(context.appPort, '/using-asset') - await browser - .elementByCss('#go-asset').click() - .waitForElementByCss('#asset-page') - - expect(await browser.elementByCss('#img3').getAttribute('src')) - .toBe('http://the-image.com/the-image') - expect(await browser.elementByCss('#img4').getAttribute('src')) - .toBe('https://the-image.com/the-image') - browser.close() - }) - }) - }) -} diff --git a/test/integration/basic/test/index.test.js b/test/integration/basic/test/index.test.js index 9f97f7ee..0c015519 100644 --- a/test/integration/basic/test/index.test.js +++ b/test/integration/basic/test/index.test.js @@ -15,7 +15,6 @@ import clientNavigation from './client-navigation' import hmr from './hmr' import errorRecovery from './error-recovery' import dynamic from './dynamic' -import asset from './asset' import processEnv from './process-env' const context = {} @@ -72,6 +71,5 @@ describe('Basic Features', () => { dynamic(context, (p, q) => renderViaHTTP(context.appPort, p, q)) hmr(context, (p, q) => renderViaHTTP(context.appPort, p, q)) errorRecovery(context, (p, q) => renderViaHTTP(context.appPort, p, q)) - asset(context) processEnv(context) }) diff --git a/test/integration/custom-server/pages/asset.js b/test/integration/custom-server/pages/asset.js index 92b695bb..4f4eaa96 100644 --- a/test/integration/custom-server/pages/asset.js +++ b/test/integration/custom-server/pages/asset.js @@ -1,7 +1,5 @@ -import asset from 'next/asset' - export default () => (
- + asset page
) diff --git a/test/integration/custom-server/test/index.test.js b/test/integration/custom-server/test/index.test.js index 92735c76..ffa586c5 100644 --- a/test/integration/custom-server/test/index.test.js +++ b/test/integration/custom-server/test/index.test.js @@ -3,14 +3,12 @@ import { join } from 'path' import getPort from 'get-port' import clone from 'clone' -import cheerio from 'cheerio' import { initNextServerScript, killApp, renderViaHTTP, fetchViaHTTP } from 'next-test-utils' -import webdriver from 'next-webdriver' const appDir = join(__dirname, '../') let appPort @@ -50,8 +48,8 @@ describe('Custom Server', () => { }) it('should handle null assetPrefix accordingly', async () => { - const $normal = cheerio.load(await renderViaHTTP(appPort, '/asset?setEmptyAssetPrefix=1')) - expect($normal('img').attr('src')).toBe('/static/myimage.png') + const normalUsage = await renderViaHTTP(appPort, '/asset?setEmptyAssetPrefix=1') + expect(normalUsage).toMatch(/"\/_next/) }) it('should set the assetPrefix to a given request', async () => { @@ -65,34 +63,6 @@ describe('Custom Server', () => { expect(dynamicUsage).toMatch(/127\.0\.0\.1/) } }) - - it('should support next/asset in server side', async () => { - const $normal = cheerio.load(await renderViaHTTP(appPort, '/asset')) - expect($normal('img').attr('src')).toBe('/static/myimage.png') - - const $dynamic = cheerio.load(await renderViaHTTP(appPort, '/asset?setAssetPrefix=1')) - expect($dynamic('img').attr('src')).toBe(`http://127.0.0.1:${context.appPort}/static/myimage.png`) - }) - - it('should support next/asset in client side', async () => { - const browser = await webdriver(context.appPort, '/') - await browser - .elementByCss('#go-asset').click() - .waitForElementByCss('#asset-page') - - expect(await browser.elementByCss('img').getAttribute('src')) - .toBe(`http://localhost:${context.appPort}/static/myimage.png`) - browser.close() - - const browser2 = await webdriver(context.appPort, '/?setAssetPrefix=1') - await browser2 - .elementByCss('#go-asset').click() - .waitForElementByCss('#asset-page') - - expect(await browser2.elementByCss('img').getAttribute('src')) - .toBe(`http://127.0.0.1:${context.appPort}/static/myimage.png`) - browser2.close() - }) }) describe('with generateEtags enabled', () => { diff --git a/test/integration/export/pages/asset.js b/test/integration/export/pages/asset.js deleted file mode 100644 index 92b695bb..00000000 --- a/test/integration/export/pages/asset.js +++ /dev/null @@ -1,7 +0,0 @@ -import asset from 'next/asset' - -export default () => ( -
- -
-) diff --git a/test/integration/export/test/ssr.js b/test/integration/export/test/ssr.js index 213fc999..d9c88aa2 100644 --- a/test/integration/export/test/ssr.js +++ b/test/integration/export/test/ssr.js @@ -43,12 +43,6 @@ export default function (context) { expect(html).toMatch(/Query is: {}/) }) - it('should handle next/asset properly', async () => { - const html = await renderViaHTTP(context.port, '/asset') - const $ = cheerio.load(html) - expect($('img').attr('src')).toBe('/static/myimage.png') - }) - it('should render _error on 404', async () => { const html = await renderViaHTTP(context.port, '/404') expect(html).toMatch(/404/)