diff --git a/packages/electrode-react-webapp/lib/react/token-handlers.js b/packages/electrode-react-webapp/lib/react/token-handlers.js
index f04b3eaae..8f7f25231 100644
--- a/packages/electrode-react-webapp/lib/react/token-handlers.js
+++ b/packages/electrode-react-webapp/lib/react/token-handlers.js
@@ -144,7 +144,7 @@ module.exports = function setup(handlerContext /*, asyncTemplate*/) {
const tokenHandlers = {
[CONTENT_MARKER]: context => {
- return context.user.content && context.user.content.html || "";
+ return (context.user.content && context.user.content.html) || "";
},
[TITLE_MARKER]: () => {
diff --git a/packages/electrode-react-webapp/test/jsx-templates/test1.jsx b/packages/electrode-react-webapp/test/jsx-templates/test1.jsx
index 59037bcdf..57db9e93f 100644
--- a/packages/electrode-react-webapp/test/jsx-templates/test1.jsx
+++ b/packages/electrode-react-webapp/test/jsx-templates/test1.jsx
@@ -126,7 +126,7 @@ const Template = () => (
name="MainBody"
timestamp
elementId="subapp-mainbody"
- streaming
+ useStream
async
hydrateServerData
serverSideRendering
diff --git a/packages/electrode-react-webapp/test/spec/jsx/test1-output.txt b/packages/electrode-react-webapp/test/spec/jsx/test1-output.txt
index dcaf8cfb4..4e211ef73 100644
--- a/packages/electrode-react-webapp/test/spec/jsx/test1-output.txt
+++ b/packages/electrode-react-webapp/test/spec/jsx/test1-output.txt
@@ -73,7 +73,7 @@ hello
token process module subapp-web/lib/load not found
-
+
token process module subapp-web/lib/load not found
diff --git a/packages/subapp-pbundle/lib/framework-lib.js b/packages/subapp-pbundle/lib/framework-lib.js
index c690c1500..7fe290579 100644
--- a/packages/subapp-pbundle/lib/framework-lib.js
+++ b/packages/subapp-pbundle/lib/framework-lib.js
@@ -66,7 +66,7 @@ class FrameworkLib {
}
renderTo(element, options) {
- assert(!options.streaming, "render to stream is not yet supported for preact");
+ assert(!options.useStream, "render to stream is not yet supported for preact");
assert(!options.suspenseSsr, "suspense is not yet supported for preact");
diff --git a/packages/subapp-react/lib/framework-lib.js b/packages/subapp-react/lib/framework-lib.js
index f8938512e..adc7ffb5a 100644
--- a/packages/subapp-react/lib/framework-lib.js
+++ b/packages/subapp-react/lib/framework-lib.js
@@ -59,8 +59,8 @@ class FrameworkLib {
}
renderTo(element, options) {
- if (options.streaming) {
- assert(!options.suspenseSsr, "streaming and suspense SSR together are not supported");
+ if (options.useStream) {
+ assert(!options.suspenseSsr, "useStream and suspense SSR together are not supported");
if (options.hydrateServerData) {
return ReactDOMServer.renderToNodeStream(element);
} else {
@@ -193,7 +193,7 @@ class FrameworkLib {
`subapp ${this.ref.subApp.name} specified useReactRouter without a StartComponent, \
and can't generate it because module react-router-dom with StaticRouter is not found`
);
- return props2 =>
+ return (props2) =>
React.createElement(
ReactRouterDom.StaticRouter,
props2,
diff --git a/packages/subapp-react/package.json b/packages/subapp-react/package.json
index cd66e9124..df550ad4d 100644
--- a/packages/subapp-react/package.json
+++ b/packages/subapp-react/package.json
@@ -88,5 +88,10 @@
"functions": 100,
"lines": 100,
"cache": true
+ },
+ "prettier": {
+ "printWidth": 100,
+ "trailingComma": "none",
+ "arrowParens": "avoid"
}
}
diff --git a/packages/subapp-react/test/spec/ssr-framework.spec.js b/packages/subapp-react/test/spec/ssr-framework.spec.js
index ac04a3155..38f4061a8 100644
--- a/packages/subapp-react/test/spec/ssr-framework.spec.js
+++ b/packages/subapp-react/test/spec/ssr-framework.spec.js
@@ -9,7 +9,7 @@ const { asyncVerify } = require("run-verify");
const Redux = require("redux");
const { connect } = require("react-redux");
-describe("SSR React framework", function() {
+describe("SSR React framework", function () {
it("should setup React framework", () => {
expect(lib.React).to.be.ok;
expect(lib.AppContext).to.be.ok;
@@ -92,7 +92,7 @@ describe("SSR React framework", function() {
expect(res).contains("Hello foo bar");
});
- it("should render Component with streaming if enabled", () => {
+ it("should render Component with stream if enabled", () => {
const framework = new lib.FrameworkLib({
subApp: {
prepare: () => ({ test: "foo bar" }),
@@ -101,7 +101,7 @@ describe("SSR React framework", function() {
}
},
subAppServer: {},
- options: { serverSideRendering: true, streaming: true },
+ options: { serverSideRendering: true, useStream: true },
context: {
user: {}
}
@@ -118,7 +118,7 @@ describe("SSR React framework", function() {
);
});
- it("should hydrate render Component with streaming if enabled", () => {
+ it("should hydrate render Component with stream if enabled", () => {
const framework = new lib.FrameworkLib({
subApp: {
prepare: () => ({ test: "foo bar" }),
@@ -127,7 +127,7 @@ describe("SSR React framework", function() {
}
},
subAppServer: {},
- options: { serverSideRendering: true, streaming: true, hydrateServerData: true },
+ options: { serverSideRendering: true, useStream: true, hydrateServerData: true },
context: {
user: {}
}
diff --git a/packages/subapp-server/lib/setup-hapi-routes.js b/packages/subapp-server/lib/setup-hapi-routes.js
index d6b17965c..ea7d84e4b 100644
--- a/packages/subapp-server/lib/setup-hapi-routes.js
+++ b/packages/subapp-server/lib/setup-hapi-routes.js
@@ -172,11 +172,13 @@ async function setupRoutesFromFile(srcDir, server, pluginOpts) {
});
}
+ const useStream = routeOptions.useStream !== false;
+
const routeHandler = ReactWebapp.makeRouteHandler(routeOptions);
const handler = async (request, h) => {
try {
const context = await routeHandler({
- content: { html: "", status: 200, useStream: true },
+ content: { html: "", status: 200, useStream },
mode: "",
request
});
@@ -185,10 +187,7 @@ async function setupRoutesFromFile(srcDir, server, pluginOpts) {
const status = data.status;
if (status === undefined) {
- return h
- .response(data)
- .type("text/html; charset=UTF-8")
- .code(200);
+ return h.response(data).type("text/html; charset=UTF-8").code(200);
} else if (HttpStatus.redirect[status]) {
return h.redirect(data.path).code(status);
} else if (HttpStatus.displayHtml[status]) {
diff --git a/packages/subapp-server/src/index-page.jsx b/packages/subapp-server/src/index-page.jsx
index c77be663d..54e934c9d 100644
--- a/packages/subapp-server/src/index-page.jsx
+++ b/packages/subapp-server/src/index-page.jsx
@@ -23,7 +23,7 @@ const RenderSubApps = (props, context) => {
_concurrent: true,
elementId,
timestamp: true,
- streaming: false,
+ useStream: false,
async: true,
serverSideRendering: true
},
diff --git a/packages/subapp-web/lib/load.js b/packages/subapp-web/lib/load.js
index 73189fb49..403ad693d 100644
--- a/packages/subapp-web/lib/load.js
+++ b/packages/subapp-web/lib/load.js
@@ -12,6 +12,7 @@
* - generate code to bootstrap subapp on client
*/
+const assert = require("assert");
const Fs = require("fs");
const Path = require("path");
const _ = require("lodash");
@@ -53,7 +54,7 @@ module.exports = function setup(setupContext, { props: setupProps }) {
// name="Header"
// async=true
// defer=true
- // streaming=true
+ // useStream=true
// serverSideRendering=true
// hydrateServerData=false
// clientSideRendering=false
@@ -189,10 +190,24 @@ Response: ${err || body}`
loadSubApp();
prepareSubAppJsBundle();
+ const verifyUseStream = props => {
+ if (props.useStream) {
+ const routeStream = setupContext.routeOptions.useStream;
+ assert(
+ routeStream !== false,
+ `subapp '${props.name}' can't set useStream when route options 'useStream' is false.`
+ );
+ }
+ };
+
+ verifyUseStream(setupProps);
+
const clientProps = JSON.stringify(_.pick(setupProps, ["useReactRouter"]));
return {
process: (context, { props }) => {
+ verifyUseStream(props);
+
const { request } = context.user;
if (request.app.webpackDev && subAppLoadTime < request.app.webpackDev.compileTime) {
diff --git a/samples/poc-subapp/README.md b/samples/poc-subapp/README.md
index 0a2099826..b10140b38 100644
--- a/samples/poc-subapp/README.md
+++ b/samples/poc-subapp/README.md
@@ -136,8 +136,8 @@ You can also control how your subapp works from server side to client side for e
Some of the attributes supported:
- `hydrate` - Enable client side hydration of initial state from server. ie: Use `React.hydrate` API.
-- `streaming` - Use the streaming SSR APIs. ie: `ReactDomServer.renderToNodeStream`.
-- `suspenseSsr` - Support suspense in SSR. No streaming.
+- `useStream` - Use the stream SSR APIs. ie: `ReactDomServer.renderToNodeStream`.
+- `suspenseSsr` - Support suspense in SSR. No stream support.
## React Router and SPA
@@ -195,10 +195,7 @@ const mapStateToProps = state => state;
export default reduxLoadSubApp({
name: "Home",
- Component: connect(
- mapStateToProps,
- dispatch => ({ dispatch })
- )(Home),
+ Component: connect(mapStateToProps, dispatch => ({ dispatch }))(Home),
reduxCreateStore(initialState) {
return createStore(reducers, initialState);
}
diff --git a/samples/poc-subapp/TODO.md b/samples/poc-subapp/TODO.md
index ce6f7a05e..1bd852e4f 100644
--- a/samples/poc-subapp/TODO.md
+++ b/samples/poc-subapp/TODO.md
@@ -1,4 +1,4 @@
-# Streaming SSR [ ]
+# Streaming SSR [x]
- Enable support for `renderToNodeStream`
- Enable HTTP streaming
@@ -11,7 +11,7 @@
- Store bundle load status in `window.webSubApps`
- When rendering subapp without bundle yet, dynamically load them
-# Dynamic SSR [ ]
+# Dynamic SSR [x]
- Allow each route and subapp to dynamically turn on/off SSR for a request
diff --git a/samples/poc-subapp/babel.config.js b/samples/poc-subapp/babel.config.js
new file mode 100644
index 000000000..fb1d6601e
--- /dev/null
+++ b/samples/poc-subapp/babel.config.js
@@ -0,0 +1,4 @@
+"use strict";
+module.exports = {
+ extends: "@xarc/app-dev/config/babel/babelrc.js"
+};
diff --git a/samples/poc-subapp/fyn-lock.yaml b/samples/poc-subapp/fyn-lock.yaml
index ba446284c..3be05a513 100644
--- a/samples/poc-subapp/fyn-lock.yaml
+++ b/samples/poc-subapp/fyn-lock.yaml
@@ -2088,10 +2088,10 @@
'@webassemblyjs/wast-parser': 1.8.5
'@xtuc/long': 4.2.2
'@xarc/app':
- _latest: 8.0.9-fynlocal_h
+ _latest: 8.0.15-fynlocal_h
_:
- ../../packages/xarc-app: 8.0.9-fynlocal_h
- 8.0.9-fynlocal_h:
+ ../../packages/xarc-app: 8.0.15-fynlocal_h
+ 8.0.15-fynlocal_h:
top: 1
$: local
_: ../../packages/xarc-app
@@ -2103,10 +2103,10 @@
optional-require: ^1.0.0
subapp-util: ^1.0.4
'@xarc/app-dev':
- _latest: 8.0.9-fynlocal_h
+ _latest: 8.0.15-fynlocal_h
_:
- ../../packages/xarc-app-dev: 8.0.9-fynlocal_h
- 8.0.9-fynlocal_h:
+ ../../packages/xarc-app-dev: 8.0.15-fynlocal_h
+ 8.0.15-fynlocal_h:
top: 1
$: local
_: ../../packages/xarc-app-dev
@@ -2125,15 +2125,15 @@
'@babel/register': ^7.0.0
'@jchip/redbird': ^1.1.0
'@loadable/babel-plugin': ^5.10.0
- '@xarc/webpack': 8.0.0
+ '@xarc/webpack': 8.0.2
ansi-to-html: ^0.6.8
babel-plugin-dynamic-import-node: ^2.2.0
babel-plugin-lodash: ^3.3.4
babel-plugin-minify-dead-code-elimination: ^0.5.0
babel-plugin-transform-node-env-inline: ^0.4.3
babel-plugin-transform-react-remove-prop-types: ^0.4.20
- boxen: ^2.1.0
- chalker: ^1.1.1
+ boxen: ^4.2.0
+ chalker: ^1.2.0
chokidar: ^2.0.4
core-js: ^3
electrode-hapi-compat: ^1.2.0
@@ -2144,6 +2144,7 @@
identity-obj-proxy: ^3.0.0
isomorphic-loader: ^3.0.0
lodash: ^4.13.1
+ log-update: ^4.0.0
mime: ^1.0.0
mkdirp: ^0.5.1
nix-clap: ^1.3.7
@@ -2161,25 +2162,25 @@
webpack-dev-middleware: ^3.4.0
webpack-hot-middleware: ^2.22.2
winston: ^2.3.1
- xaa: ^1.2.2
- xclap: ^0.2.46
+ xaa: ^1.4.0
+ xclap: ^0.2.48
xenv-config: ^1.3.1
xsh: ^0.4.4
peerDependencies:
'@xarc/app': ^8.0.3
'@xarc/webpack':
- _latest: 8.0.0-fynlocal_h
+ _latest: 8.0.2-fynlocal_h
_:
- ../xarc-webpack: 8.0.0-fynlocal_h
- 8.0.0-fynlocal_h:
+ ../xarc-webpack: 8.0.2-fynlocal_h
+ 8.0.2-fynlocal_h:
$: local
_: ../../packages/xarc-webpack
dependencies:
'@loadable/webpack-plugin': ^5.7.1
autoprefixer: ^9.6.0
babel-loader: ^8.0.4
- chalk: ^3.0.0
- chalker: ^1.1.2
+ chalk: ^4.0.0
+ chalker: ^1.2.0
css-loader: ^1.0.0
electrode-cdn-file-loader: ^1.0.0
electrode-node-resolver: ^2.0.0
@@ -2341,9 +2342,15 @@ ansi-colors:
$: sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==
_: 'https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz'
ansi-escapes:
- _latest: 4.3.0
+ _latest: 4.3.1
_:
^3.0.0: 3.2.0
+ ^4.3.0: 4.3.1
+ 4.3.1:
+ $: sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==
+ _: 'https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz'
+ dependencies:
+ type-fest: ^0.11.0
3.2.0:
$: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
_: 'https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz'
@@ -2360,6 +2367,10 @@ ansi-regex:
^2.0.0: 2.1.1
^3.0.0: 3.0.0
'^4.0.0,^4.1.0': 4.1.0
+ ^5.0.0: 5.0.0
+ 5.0.0:
+ $: sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
+ _: 'https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz'
4.1.0:
$: sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
_: 'https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz'
@@ -2374,7 +2385,7 @@ ansi-styles:
_:
^2.2.1: 2.2.1
'^3.2.0,^3.2.1': 3.2.1
- ^4.1.0: 4.2.1
+ '^4.0.0,^4.1.0': 4.2.1
4.2.1:
$: sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==
_: 'https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz'
@@ -2541,6 +2552,10 @@ astral-regex:
_latest: 2.0.0
_:
^1.0.0: 1.0.0
+ ^2.0.0: 2.0.0
+ 2.0.0:
+ $: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
+ _: 'https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz'
1.0.0:
$: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
_: 'https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz'
@@ -2884,18 +2899,19 @@ boolbase:
boxen:
_latest: 4.2.0
_:
- ^2.1.0: 2.1.0
- 2.1.0:
- $: sha512-luq3RQOt2U5sUX+fiu+qnT+wWnHDcATLpEe63jvge6GUZO99AKbVRfp97d2jgLvq1iQa0ORzaAm4lGVG52ZSlw==
- _: 'https://registry.npmjs.org/boxen/-/boxen-2.1.0.tgz'
+ ^4.2.0: 4.2.0
+ 4.2.0:
+ $: sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==
+ _: 'https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz'
dependencies:
ansi-align: ^3.0.0
- camelcase: ^5.0.0
- chalk: ^2.4.1
- cli-boxes: ^1.0.0
- string-width: ^3.0.0
- term-size: ^1.2.0
- widest-line: ^2.0.0
+ camelcase: ^5.3.1
+ chalk: ^3.0.0
+ cli-boxes: ^2.2.0
+ string-width: ^4.1.0
+ term-size: ^2.1.0
+ type-fest: ^0.8.1
+ widest-line: ^3.1.0
brace-expansion:
_latest: 1.1.11
_:
@@ -3219,6 +3235,13 @@ chalk:
'2.4.2,^2.0.0,^2.0.1,^2.1.0,^2.4.1,^2.4.2': 2.4.2
^1.1.3: 1.1.3
^3.0.0: 3.0.0
+ ^4.0.0: 4.0.0
+ 4.0.0:
+ $: sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==
+ _: 'https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz'
+ dependencies:
+ ansi-styles: ^4.1.0
+ supports-color: ^7.1.0
3.0.0:
$: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
_: 'https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz'
@@ -3242,14 +3265,14 @@ chalk:
strip-ansi: ^3.0.0
supports-color: ^2.0.0
chalker:
- _latest: 1.1.2
+ _latest: 1.2.0
_:
- '^1.1.1,^1.1.2': 1.1.2
- 1.1.2:
- $: sha512-DYaS9gfTsjQz8aYBKVlqicaXgNHfp6/HqOmNXdq40C/QgXl16kJSp2USdF8l2bJGDEE9hJKQqSGQVB5UczxnTA==
- _: 'https://registry.npmjs.org/chalker/-/chalker-1.1.2.tgz'
+ ^1.2.0: 1.2.0
+ 1.2.0:
+ $: sha512-Cag6asQV/lK6AQGBWGGDt5bu+FSzo4OlLHQVrd4Io1cJCGNXIvKcaxx6JH0+iL1azQ4Bs1i7qkvzlkH2Vwo2OQ==
+ _: 'https://registry.npmjs.org/chalker/-/chalker-1.2.0.tgz'
dependencies:
- chalk: ^2.4.2
+ chalk: ^4.0.0
chardet:
_latest: 0.8.0
_:
@@ -3334,14 +3357,20 @@ class-utils:
cli-boxes:
_latest: 2.2.0
_:
- ^1.0.0: 1.0.0
- 1.0.0:
- $: sha1-T6kXw+WclKAEzWH47lCdplFocUM=
- _: 'https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz'
+ ^2.2.0: 2.2.0
+ 2.2.0:
+ $: sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==
+ _: 'https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz'
cli-cursor:
_latest: 3.1.0
_:
^2.1.0: 2.1.0
+ ^3.1.0: 3.1.0
+ 3.1.0:
+ $: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
+ _: 'https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz'
+ dependencies:
+ restore-cursor: ^3.1.0
2.1.0:
$: sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=
_: 'https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz'
@@ -3635,7 +3664,7 @@ cross-spawn:
_:
'6.0.5,^6.0.0': 6.0.5
^4: 4.0.2
- '^5.0.1,^5.1.0': 5.1.0
+ ^5.1.0: 5.1.0
6.0.5:
$: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
_: 'https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz'
@@ -4287,10 +4316,10 @@ electrode-node-resolver:
dependencies:
require-at: ^1.0.0
electrode-react-webapp:
- _latest: 3.8.6-fynlocal_h
+ _latest: 3.8.8-fynlocal_h
_:
- ../electrode-react-webapp: 3.8.6-fynlocal_h
- 3.8.6-fynlocal_h:
+ ../electrode-react-webapp: 3.8.8-fynlocal_h
+ 3.8.8-fynlocal_h:
$: local
_: ../../packages/electrode-react-webapp
dependencies:
@@ -4357,6 +4386,10 @@ emoji-regex:
_latest: 8.0.0
_:
^7.0.1: 7.0.3
+ ^8.0.0: 8.0.0
+ 8.0.0:
+ $: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+ _: 'https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz'
7.0.3:
$: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
_: 'https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz'
@@ -4705,7 +4738,6 @@ exec-sh:
execa:
_latest: 4.0.0
_:
- ^0.7.0: 0.7.0
^1.0.0: 1.0.0
1.0.0:
$: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
@@ -4718,17 +4750,6 @@ execa:
p-finally: ^1.0.0
signal-exit: ^3.0.0
strip-eof: ^1.0.0
- 0.7.0:
- $: sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=
- _: 'https://registry.npmjs.org/execa/-/execa-0.7.0.tgz'
- dependencies:
- cross-spawn: ^5.0.1
- get-stream: ^3.0.0
- is-stream: ^1.1.0
- npm-run-path: ^2.0.0
- p-finally: ^1.0.0
- signal-exit: ^3.0.0
- strip-eof: ^1.0.0
exit:
_latest: 0.1.2
_:
@@ -5184,16 +5205,12 @@ get-caller-file:
get-stream:
_latest: 5.1.0
_:
- ^3.0.0: 3.0.0
^4.0.0: 4.1.0
4.1.0:
$: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
_: 'https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz'
dependencies:
pump: ^3.0.0
- 3.0.0:
- $: sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
- _: 'https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz'
get-value:
_latest: 3.0.1
_:
@@ -5980,6 +5997,10 @@ is-fullwidth-code-point:
_latest: 3.0.0
_:
^2.0.0: 2.0.0
+ ^3.0.0: 3.0.0
+ 3.0.0:
+ $: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+ _: 'https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz'
2.0.0:
$: sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
_: 'https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz'
@@ -7137,6 +7158,18 @@ lodash.upperfirst:
4.3.1:
$: sha1-E2Xt9DFIBIHvDRxolXpe2Z1J984=
_: 'https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz'
+log-update:
+ _latest: 4.0.0
+ _:
+ ^4.0.0: 4.0.0
+ 4.0.0:
+ $: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==
+ _: 'https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz'
+ dependencies:
+ ansi-escapes: ^4.3.0
+ cli-cursor: ^3.1.0
+ slice-ansi: ^4.0.0
+ wrap-ansi: ^6.2.0
loose-envify:
_latest: 1.4.0
_:
@@ -7337,7 +7370,7 @@ mimic-fn:
_latest: 3.0.0
_:
^1.0.0: 1.2.0
- ^2.0.0: 2.1.0
+ '^2.0.0,^2.1.0': 2.1.0
2.1.0:
$: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
_: 'https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz'
@@ -7551,7 +7584,7 @@ nice-try:
nix-clap:
_latest: 1.3.10
_:
- '^1.0.8,^1.3.7': 1.3.10
+ '^1.3.10,^1.3.7': 1.3.10
1.3.10:
$: sha512-sdQTROrsLYFFRo4koLdVPfXC+H7kB+cEjSvSLNP/9m2foSypqoLzqfITdUHNZQi8IuvAMLdB+leaDtBj2EJPlA==
_: 'https://registry.npmjs.org/nix-clap/-/nix-clap-1.3.10.tgz'
@@ -7919,6 +7952,12 @@ onetime:
_latest: 5.1.0
_:
^2.0.0: 2.0.1
+ ^5.1.0: 5.1.0
+ 5.1.0:
+ $: sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==
+ _: 'https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz'
+ dependencies:
+ mimic-fn: ^2.1.0
2.0.1:
$: sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=
_: 'https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz'
@@ -9432,6 +9471,13 @@ restore-cursor:
_latest: 3.1.0
_:
^2.0.0: 2.0.0
+ ^3.1.0: 3.1.0
+ 3.1.0:
+ $: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
+ _: 'https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz'
+ dependencies:
+ onetime: ^5.1.0
+ signal-exit: ^3.0.2
2.0.0:
$: sha1-n37ih/gv0ybU/RYpI9YhKe7g368=
_: 'https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz'
@@ -9808,9 +9854,17 @@ slash:
$: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
_: 'https://registry.npmjs.org/slash/-/slash-2.0.0.tgz'
slice-ansi:
- _latest: 3.0.0
+ _latest: 4.0.0
_:
1.0.0: 1.0.0
+ ^4.0.0: 4.0.0
+ 4.0.0:
+ $: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==
+ _: 'https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz'
+ dependencies:
+ ansi-styles: ^4.0.0
+ astral-regex: ^2.0.0
+ is-fullwidth-code-point: ^3.0.0
1.0.0:
$: sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==
_: 'https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz'
@@ -10149,6 +10203,14 @@ string-width:
_:
'^2.1.0,^2.1.1': 2.1.1
'^3.0.0,^3.1.0': 3.1.0
+ '^4.0.0,^4.1.0': 4.2.0
+ 4.2.0:
+ $: sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==
+ _: 'https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz'
+ dependencies:
+ emoji-regex: ^8.0.0
+ is-fullwidth-code-point: ^3.0.0
+ strip-ansi: ^6.0.0
3.1.0:
$: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
_: 'https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz'
@@ -10217,6 +10279,12 @@ strip-ansi:
^3.0.0: 3.0.1
^4.0.0: 4.0.0
'^5.0.0,^5.1.0,^5.2.0': 5.2.0
+ ^6.0.0: 6.0.0
+ 6.0.0:
+ $: sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
+ _: 'https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz'
+ dependencies:
+ ansi-regex: ^5.0.0
5.2.0:
$: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
_: 'https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz'
@@ -10275,10 +10343,10 @@ stylehacks:
postcss: ^7.0.0
postcss-selector-parser: ^3.0.0
subapp-react:
- _latest: 0.0.11-fynlocal_h
+ _latest: 0.0.14-fynlocal_h
_:
- ../../packages/subapp-react: 0.0.11-fynlocal_h
- 0.0.11-fynlocal_h:
+ ../../packages/subapp-react: 0.0.14-fynlocal_h
+ 0.0.14-fynlocal_h:
top: 1
$: local
_: ../../packages/subapp-react
@@ -10286,43 +10354,43 @@ subapp-react:
'@babel/runtime': ^7.8.3
optional-require: ^1.0.0
subapp-util: ^1.0.3
- subapp-web: ^1.0.19
+ subapp-web: ^1.0.23
peerDependencies:
react: '*'
react-dom: '*'
subapp-redux:
- _latest: 1.0.20-fynlocal_h
+ _latest: 1.0.23-fynlocal_h
_:
- ../../packages/subapp-redux: 1.0.20-fynlocal_h
- 1.0.20-fynlocal_h:
+ ../../packages/subapp-redux: 1.0.23-fynlocal_h
+ 1.0.23-fynlocal_h:
top: 1
$: local
_: ../../packages/subapp-redux
dependencies:
optional-require: ^1.0.0
subapp-util: ^1.0.3
- subapp-web: ^1.0.19
+ subapp-web: ^1.0.23
peerDependencies:
react: '*'
react-dom: '*'
redux: '*'
react-redux: '*'
subapp-server:
- _latest: 1.1.10-fynlocal_h
+ _latest: 1.1.16-fynlocal_h
_:
- ../../packages/subapp-server: 1.1.10-fynlocal_h
- 1.1.10-fynlocal_h:
+ ../../packages/subapp-server: 1.1.16-fynlocal_h
+ 1.1.16-fynlocal_h:
top: 1
$: local
_: ../../packages/subapp-server
dependencies:
'@hapi/boom': ^7.4.1
- electrode-react-webapp: ^3.8.6
+ electrode-react-webapp: ^3.8.8
filter-scan-dir: ^1.0.9
http-status-codes: ^1.3.0
optional-require: ^1.0.0
subapp-util: ^1.0.4
- xaa: ^1.0.0
+ xaa: ^1.4.0
subapp-util:
_latest: 1.0.4-fynlocal_h
_:
@@ -10334,10 +10402,10 @@ subapp-util:
filter-scan-dir: ^1.0.9
optional-require: ^1.0.0
subapp-web:
- _latest: 1.0.20-fynlocal_h
+ _latest: 1.0.23-fynlocal_h
_:
- '../../packages/subapp-web,../subapp-web': 1.0.20-fynlocal_h
- 1.0.20-fynlocal_h:
+ '../../packages/subapp-web,../subapp-web': 1.0.23-fynlocal_h
+ 1.0.23-fynlocal_h:
top: 1
$: local
_: ../../packages/subapp-web
@@ -10350,7 +10418,7 @@ subapp-web:
optional-require: ^1.0.0
request: ^2.88.0
subapp-util: ^1.0.4
- xaa: ^1.1.4
+ xaa: ^1.4.0
sudo-prompt:
_latest: 9.1.1
_:
@@ -10442,12 +10510,10 @@ tapable:
term-size:
_latest: 2.2.0
_:
- ^1.2.0: 1.2.0
- 1.2.0:
- $: sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=
- _: 'https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz'
- dependencies:
- execa: ^0.7.0
+ ^2.1.0: 2.2.0
+ 2.2.0:
+ $: sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==
+ _: 'https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz'
terser:
_latest: 4.6.3
_:
@@ -10670,6 +10736,17 @@ type-check:
_: 'https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz'
dependencies:
prelude-ls: ~1.1.2
+type-fest:
+ _latest: 0.13.1
+ _:
+ ^0.11.0: 0.11.0
+ ^0.8.1: 0.8.1
+ 0.11.0:
+ $: sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==
+ _: 'https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz'
+ 0.8.1:
+ $: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
+ _: 'https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz'
typedarray:
_latest: 0.0.6
_:
@@ -10772,7 +10849,7 @@ unset-value:
unwrap-npm-cmd:
_latest: 1.1.1
_:
- ^1.1.0: 1.1.1
+ ^1.1.1: 1.1.1
1.1.1:
$: sha512-Y0PFhW+X6oahjV/e4yBxThgq0k9Ymh3RwUh6P/rMiGp55X5qa2mQghZAHKyJ9tDPinZntD0Z+5DHFzlx9/UNbg==
_: 'https://registry.npmjs.org/unwrap-npm-cmd/-/unwrap-npm-cmd-1.1.1.tgz'
@@ -11163,12 +11240,12 @@ which-module:
widest-line:
_latest: 3.1.0
_:
- ^2.0.0: 2.0.1
- 2.0.1:
- $: sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==
- _: 'https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz'
+ ^3.1.0: 3.1.0
+ 3.1.0:
+ $: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==
+ _: 'https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz'
dependencies:
- string-width: ^2.1.1
+ string-width: ^4.0.0
winston:
_latest: 3.2.1
_:
@@ -11203,6 +11280,14 @@ wrap-ansi:
_latest: 6.2.0
_:
^5.1.0: 5.1.0
+ ^6.2.0: 6.2.0
+ 6.2.0:
+ $: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
+ _: 'https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz'
+ dependencies:
+ ansi-styles: ^4.0.0
+ string-width: ^4.1.0
+ strip-ansi: ^6.0.0
5.1.0:
$: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
_: 'https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz'
@@ -11257,33 +11342,33 @@ ws:
xaa:
_latest: 1.2.1
_:
- '^1.0.0,^1.1.4': 1.2.1
- ^1.2.2: 1.2.2
- 1.2.2:
- $: sha512-1kkYxIZRFj8CruXv/lEFfjQvNnI9lL50AqE2ho7jqdre/ClmrPc10Gc9JgCtwUFM63CxViPn99+4IqHad6Zfrw==
- _: 'https://registry.npmjs.org/xaa/-/xaa-1.2.2.tgz'
+ ^1.1.4: 1.2.1
+ ^1.4.0: 1.4.0
+ 1.4.0:
+ $: sha512-mX3ELNk7ZU5KtUwO7XsamqlVoE7xJ/0WRLHRpb6u//sgWfm6AHxsnrnu/pUyp3ppQ4lwV5bsA06j4K7U+WYEhA==
+ _: 'https://registry.npmjs.org/xaa/-/xaa-1.4.0.tgz'
1.2.1:
$: sha512-PUHTFveQ6XOheZq4GlimMcVFrgn9m6rrbFefN8UKeUoJqqeam76VCFMx8hFip1/aXPAnolJCiTAH+KcUQ92G2w==
_: 'https://registry.npmjs.org/xaa/-/xaa-1.2.1.tgz'
xclap:
- _latest: 0.2.46
+ _latest: 0.2.48
_:
- ^0.2.46: 0.2.46
- 0.2.46:
- $: sha512-gootgqb/zpagBldylcMkxACZA+9DAZV0hKkNnailNOcpQ25G+xl+VPYfCZyMW3pLM1B/gffb98jXPUFT1I3rZg==
- _: 'https://registry.npmjs.org/xclap/-/xclap-0.2.46.tgz'
+ ^0.2.48: 0.2.48
+ 0.2.48:
+ $: sha512-jc9/NjcaTDUszhNj0wOW83NNBx7wUcrzYzldotao6go7g/qMH+5QZYNiYyh98Y/8DhFQndDJihL39+oJIPNJFg==
+ _: 'https://registry.npmjs.org/xclap/-/xclap-0.2.48.tgz'
dependencies:
- chalk: ^2.0.1
- chalker: ^1.1.2
+ chalk: ^4.0.0
+ chalker: ^1.2.0
insync: ^2.1.1
jaro-winkler: ^0.2.8
lodash.foreach: ^4.5.0
- nix-clap: ^1.0.8
+ nix-clap: ^1.3.10
optional-require: ^1.0.0
path-is-inside: ^1.0.2
string-array: ^1.0.0
- unwrap-npm-cmd: ^1.1.0
- xsh: ^0.4.0
+ unwrap-npm-cmd: ^1.1.1
+ xsh: ^0.4.4
xenv-config:
_latest: 1.3.1
_:
@@ -11301,7 +11386,7 @@ xml-name-validator:
xsh:
_latest: 0.4.4
_:
- '^0.4.0,^0.4.4': 0.4.4
+ ^0.4.4: 0.4.4
0.4.4:
$: sha512-fwl0KsCubpCv/PMwwy6PiaLAak12aROkIgZMec8pzlgB8TvA7jckou7CBDta7SQouiG9KNqWNVOYBKnkEdx4gQ==
_: 'https://registry.npmjs.org/xsh/-/xsh-0.4.4.tgz'
diff --git a/samples/poc-subapp/package.json b/samples/poc-subapp/package.json
index b864fff7c..0ae17585b 100644
--- a/samples/poc-subapp/package.json
+++ b/samples/poc-subapp/package.json
@@ -69,5 +69,9 @@
"electrode-archetype-opt-jest": "../../packages/electrode-archetype-opt-jest"
}
},
- "optionalDependencies": {}
+ "prettier": {
+ "printWidth": 100,
+ "trailingComma": "none",
+ "arrowParens": "avoid"
+ }
}
diff --git a/samples/poc-subapp/src/.babelrc.js b/samples/poc-subapp/src/.babelrc.js
deleted file mode 100644
index 8d166bca2..000000000
--- a/samples/poc-subapp/src/.babelrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
- extends: "@xarc/app-dev/config/babel/babelrc-client.js"
-};
diff --git a/samples/poc-subapp/src/server-routes/.babelrc.js b/samples/poc-subapp/src/server-routes/.babelrc.js
deleted file mode 100644
index 4ddc80c89..000000000
--- a/samples/poc-subapp/src/server-routes/.babelrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
- extends: "@xarc/app-dev/config/babel/babelrc-server.js"
-};
diff --git a/samples/poc-subapp/src/server-routes/default/index.js b/samples/poc-subapp/src/server-routes/default/index.js
index 4bb49c196..27aca5ebc 100644
--- a/samples/poc-subapp/src/server-routes/default/index.js
+++ b/samples/poc-subapp/src/server-routes/default/index.js
@@ -53,7 +53,7 @@ const Template = (
name="MainBody"
timestamp
elementId="subapp-mainbody"
- streaming
+ useStream
async
hydrateServerData
serverSideRendering
@@ -66,7 +66,7 @@ const Template = (
timestamp
elementId="subapp-bottom"
name="Bottom"
- streaming
+ useStream
hydrateServerData
async
serverSideRendering
diff --git a/samples/poc-subapp/src/server/.babelrc.js b/samples/poc-subapp/src/server/.babelrc.js
deleted file mode 100644
index 4ddc80c89..000000000
--- a/samples/poc-subapp/src/server/.babelrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
- extends: "@xarc/app-dev/config/babel/babelrc-server.js"
-};