From bee9c9d40dfda7d5bffe330f0c4141689f9063f8 Mon Sep 17 00:00:00 2001 From: Ryan Tsao Date: Fri, 21 Sep 2018 20:22:59 -0700 Subject: [PATCH 1/2] Update fusion-core --- package.json | 4 ++-- yarn.lock | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index cfc531b..5e5d9df 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "react-router-dom": "^4.3.1" }, "peerDependencies": { - "fusion-core": "^1.4.1", + "fusion-core": "^1.7.0-alpha.2", "react": "14.x - 16.x", "react-dom": "14.x - 16.x" }, @@ -44,7 +44,7 @@ "eslint-plugin-prettier": "2.6.2", "eslint-plugin-react": "7.11.0", "flow-bin": "0.78.0", - "fusion-core": "^1.4.1", + "fusion-core": "^1.7.0-alpha.2", "fusion-plugin-universal-events": "^1.0.5", "fusion-react": "^1.1.0", "fusion-test-utils": "^1.2.2", diff --git a/yarn.lock b/yarn.lock index 7e4bc4c..b22872a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2557,9 +2557,9 @@ functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" -fusion-core@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/fusion-core/-/fusion-core-1.4.1.tgz#22daeddeefa3125b056cdcccd9c6dd486d7f032e" +fusion-core@^1.7.0-alpha.2: + version "1.7.0-alpha.2" + resolved "https://registry.yarnpkg.com/fusion-core/-/fusion-core-1.7.0-alpha.2.tgz#f2279a57b93d4e19b468d106402accd1bafdef9f" dependencies: koa "^2.4.1" koa-compose "^4.0.0" From b2e08ea74118d683a424fb1e63cb91f74f242edd Mon Sep 17 00:00:00 2001 From: Ryan Tsao Date: Mon, 24 Sep 2018 12:31:07 -0700 Subject: [PATCH 2/2] Use RoutePrefixToken if registered --- package.json | 4 ++-- src/__tests__/plugin.js | 10 ++-------- src/plugin.js | 25 ++++++++++++++++++++----- yarn.lock | 6 +++--- 4 files changed, 27 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index 5e5d9df..92a4ce5 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "react-router-dom": "^4.3.1" }, "peerDependencies": { - "fusion-core": "^1.7.0-alpha.2", + "fusion-core": "^1.7.0-alpha.3", "react": "14.x - 16.x", "react-dom": "14.x - 16.x" }, @@ -44,7 +44,7 @@ "eslint-plugin-prettier": "2.6.2", "eslint-plugin-react": "7.11.0", "flow-bin": "0.78.0", - "fusion-core": "^1.7.0-alpha.2", + "fusion-core": "^1.7.0-alpha.3", "fusion-plugin-universal-events": "^1.0.5", "fusion-react": "^1.1.0", "fusion-test-utils": "^1.2.2", diff --git a/src/__tests__/plugin.js b/src/__tests__/plugin.js index 03e358a..052d6ac 100644 --- a/src/__tests__/plugin.js +++ b/src/__tests__/plugin.js @@ -8,7 +8,7 @@ import React from 'react'; import {UniversalEventsToken} from 'fusion-plugin-universal-events'; -import {createPlugin} from 'fusion-core'; +import {createPlugin, RoutePrefixToken} from 'fusion-core'; import App from 'fusion-react'; import {getSimulator} from 'fusion-test-utils'; import {withRouter, Link} from 'react-router-dom'; @@ -17,12 +17,6 @@ import {Route} from '../modules/Route'; import {Redirect} from '../modules/Redirect.js'; import RouterPlugin, {RouterProviderToken, RouterToken} from '../plugin'; -const addRoutePrefix = (ctx, next) => { - // hack until we have better route prefix support in fusion-test-utils - ctx.prefix = '/test'; - return next(); -}; - function getApp(el) { const app = new App(el); app.register(RouterToken, RouterPlugin); @@ -31,7 +25,7 @@ function getApp(el) { function getPrefixApp(el) { const app = new App(el); - app.middleware(addRoutePrefix); + app.register(RoutePrefixToken, '/test'); app.register(RouterPlugin); return app; } diff --git a/src/plugin.js b/src/plugin.js index 23d5130..91cd829 100644 --- a/src/plugin.js +++ b/src/plugin.js @@ -8,7 +8,14 @@ import * as React from 'react'; import {UniversalEventsToken} from 'fusion-plugin-universal-events'; -import {createPlugin, createToken, html, unescape, memoize} from 'fusion-core'; +import { + createPlugin, + createToken, + html, + unescape, + memoize, + RoutePrefixToken, +} from 'fusion-core'; import {Router as ServerRouter} from './server'; import {Router as BrowserRouter} from './browser'; import {Router as DefaultProvider} from 'react-router-dom'; @@ -41,10 +48,18 @@ export default createPlugin({ deps: { emitter: UniversalEventsToken.optional, Provider: RouterProviderToken.optional, + prefix: RoutePrefixToken.optional, }, - middleware: ({emitter, Provider = DefaultProvider}, self) => { + middleware: ({emitter, Provider = DefaultProvider, prefix}, self) => { return async (ctx, next) => { - const prefix = ctx.prefix || ''; + if (!prefix) { + if (ctx.prefix) { + prefix = ctx.prefix; + } else { + prefix = ''; + } + } + if (!ctx.element) { return next(); } @@ -125,13 +140,13 @@ export default createPlugin({ return payload; }); // Expose the history object - const history = createBrowserHistory({basename: ctx.prefix}); + const history = createBrowserHistory({basename: prefix}); myAPI.history = history; ctx.element = ( { pageData = payload; emitter && emitter.emit('pageview:browser', payload); diff --git a/yarn.lock b/yarn.lock index b22872a..e5d452d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2557,9 +2557,9 @@ functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" -fusion-core@^1.7.0-alpha.2: - version "1.7.0-alpha.2" - resolved "https://registry.yarnpkg.com/fusion-core/-/fusion-core-1.7.0-alpha.2.tgz#f2279a57b93d4e19b468d106402accd1bafdef9f" +fusion-core@^1.7.0-alpha.3: + version "1.7.0-alpha.3" + resolved "https://registry.yarnpkg.com/fusion-core/-/fusion-core-1.7.0-alpha.3.tgz#dfcb57dc2c3e4daa06d4714d729a6d2fbd725945" dependencies: koa "^2.4.1" koa-compose "^4.0.0"