From 03c88918e699b83063a95b70856e8a3651b088ab Mon Sep 17 00:00:00 2001 From: Westin Wrzesinski Date: Mon, 21 Feb 2022 18:01:37 -0600 Subject: [PATCH] chore: upgrade to grumbler-scripts v5 --- .babelrc => babel.config.json | 0 package.json | 2 +- src/node.js | 29 +++++++++++++++-------------- src/renderers/html.js | 5 +++-- src/renderers/react.js | 7 +++---- src/renderers/text.js | 5 +++-- test/.eslintrc.js | 7 ++++--- test/tests/dom.jsx | 14 +++++++------- test/tests/html.jsx | 6 +++--- 9 files changed, 39 insertions(+), 36 deletions(-) rename .babelrc => babel.config.json (100%) diff --git a/.babelrc b/babel.config.json similarity index 100% rename from .babelrc rename to babel.config.json diff --git a/package.json b/package.json index 89a2f81..9320fde 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "readmeFilename": "README.md", "devDependencies": { "flow-bin": "0.135.0", - "grumbler-scripts": "^3", + "grumbler-scripts": "^5.0.3", "mocha": "^4.1.0" } } diff --git a/src/node.js b/src/node.js index ef42af9..a2f695b 100644 --- a/src/node.js +++ b/src/node.js @@ -52,12 +52,12 @@ function renderChildren(children : $ReadOnlyArray> // eslint-disable-line no-use-before-define - onRender : ?(T) => void // eslint-disable-line no-undef + name : string; + props : NodePropsType; + children : $ReadOnlyArray>; // eslint-disable-line no-use-before-define + onRender : ?(T) => void; // eslint-disable-line no-undef constructor(name : string, props : NodePropsType, children : $ReadOnlyArray>) { // eslint-disable-line no-use-before-define this.name = name; @@ -85,9 +85,9 @@ export class ElementNode { } export class FragmentNode { - type : (typeof NODE_TYPE.FRAGMENT) = NODE_TYPE.FRAGMENT + type : (typeof NODE_TYPE.FRAGMENT) = NODE_TYPE.FRAGMENT; - children : $ReadOnlyArray> // eslint-disable-line no-use-before-define + children : $ReadOnlyArray>; // eslint-disable-line no-use-before-define constructor(children : $ReadOnlyArray>) { // eslint-disable-line no-use-before-define this.children = children; @@ -99,9 +99,9 @@ export class FragmentNode { } export class TextNode { - type : (typeof NODE_TYPE.TEXT) = NODE_TYPE.TEXT + type : (typeof NODE_TYPE.TEXT) = NODE_TYPE.TEXT; - text : string + text : string; constructor(text : string) { this.text = text; @@ -114,11 +114,12 @@ export class TextNode { // eslint-disable-next-line no-unused-vars export class ComponentNode

{ - type : (typeof NODE_TYPE.COMPONENT) = NODE_TYPE.COMPONENT + type : (typeof NODE_TYPE.COMPONENT) = NODE_TYPE.COMPONENT; - component : ComponentFunctionType - props : NodePropsType - children : $ReadOnlyArray> + component : ComponentFunctionType; + props : NodePropsType; + // eslint-disable-next-line no-use-before-define + children : $ReadOnlyArray>; constructor(component : ComponentFunctionType, props : NodePropsType, children : $ReadOnlyArray>) { this.component = component; @@ -185,7 +186,7 @@ export const node : CreateNode =

(element, props : P, ...children) => { // $FlowFixMe return new ElementNode(element, props, children); } - + if (typeof element === 'function') { // $FlowFixMe return new ComponentNode<*>(element, props, children); diff --git a/src/renderers/html.js b/src/renderers/html.js index 93cd041..790a8b1 100644 --- a/src/renderers/html.js +++ b/src/renderers/html.js @@ -1,4 +1,5 @@ /* @flow */ +/* eslint unicorn/prefer-spread: off */ import { ComponentNode, TextNode, ElementNode, type NodePropsType, type NodeRenderer } from '../node'; import { NODE_TYPE } from '../constants'; @@ -69,7 +70,7 @@ export function html() : HTMLRenderer { if (node.type === NODE_TYPE.COMPONENT) { return [].concat(node.renderComponent(htmlRenderer)).join(''); } - + if (node.type === NODE_TYPE.ELEMENT) { const renderedProps = propsToHTML(node.props); @@ -83,7 +84,7 @@ export function html() : HTMLRenderer { return `<${ node.name }${ renderedProps }>${ renderedChildren }`; } } - + if (node.type === NODE_TYPE.TEXT) { return htmlEncode(node.text); } diff --git a/src/renderers/react.js b/src/renderers/react.js index e66e3c4..3e5a1d6 100644 --- a/src/renderers/react.js +++ b/src/renderers/react.js @@ -1,6 +1,5 @@ /* @flow */ -// eslint-disable-next-line import/no-unresolved import type { Node } from 'react'; import { ComponentNode, TextNode, ElementNode, type NodeRenderer, type NodePropsType } from '../node'; @@ -31,16 +30,16 @@ export function react({ React } : {| React : ReactType |} = {}) : ReactRenderer if (!React) { throw new Error(`Must pass React library to react renderer`); } - + const reactRenderer = (node) => { if (node.type === NODE_TYPE.COMPONENT) { return React.createElement(() => (node.renderComponent(reactRenderer) || null), node.props, ...node.renderChildren(reactRenderer)); } - + if (node.type === NODE_TYPE.ELEMENT) { return React.createElement(node.name, mapReactProps(node.props), ...node.renderChildren(reactRenderer)); } - + if (node.type === NODE_TYPE.TEXT) { return node.text; } diff --git a/src/renderers/text.js b/src/renderers/text.js index dac8220..e653ca3 100644 --- a/src/renderers/text.js +++ b/src/renderers/text.js @@ -1,4 +1,5 @@ /* @flow */ +/* eslint unicorn/prefer-spread: off */ import { ComponentNode, TextNode, ElementNode, type NodeRenderer } from '../node'; import { NODE_TYPE } from '../constants'; @@ -11,11 +12,11 @@ export function text() : TextRenderer { if (node.type === NODE_TYPE.COMPONENT) { return [].concat(node.renderComponent(textRenderer)).join(''); } - + if (node.type === NODE_TYPE.ELEMENT) { throw new Error(`Text renderer does not support basic elements`); } - + if (node.type === NODE_TYPE.TEXT) { return node.text; } diff --git a/test/.eslintrc.js b/test/.eslintrc.js index 2219a54..968b6fb 100644 --- a/test/.eslintrc.js +++ b/test/.eslintrc.js @@ -1,11 +1,12 @@ /* @flow */ +/* eslint import/no-commonjs: off */ module.exports = { 'extends': require.resolve('grumbler-scripts/config/.eslintrc-browser-test'), 'rules': { - 'react/display-name': 'off', + 'react/display-name': 'off', 'react/button-has-type': 'off', - 'react/prop-types': 'off' + 'react/prop-types': 'off' } -}; \ No newline at end of file +}; diff --git a/test/tests/dom.jsx b/test/tests/dom.jsx index 244c695..8d5a7f8 100644 --- a/test/tests/dom.jsx +++ b/test/tests/dom.jsx @@ -3,7 +3,7 @@ /** @jsxFrag Fragment */ /* eslint max-lines: off */ -import { node, dom, Fragment } from '../../src'; // eslint-disable-line no-unused-vars +import { node, dom, Fragment } from '../../src'; type ExpectedNode = {| name? : string, @@ -17,7 +17,7 @@ function validateDOMElement(domNode : HTMLElement | Text, expected : ExpectedNod if (domNode.constructor.name === 'HTMLUnknownElement') { throw new Error(`Expected dom domNode '${ expected.name || 'undefiined' }' to be a valid element`); } - + if (typeof expected.element === 'string' && domNode.constructor.name !== expected.element) { throw new Error(`Expected dom domNode '${ expected.element || 'undefiined' }', got ${ domNode.constructor.name || 'undefined' }`); } @@ -186,7 +186,7 @@ describe('dom renderer cases', () => { it('should render an element with innerHTML and a script tag', () => { window.scriptTagRun = false; - + const jsxNode = (

` } /> ); @@ -266,11 +266,11 @@ describe('dom renderer cases', () => { throw new Error(`Expected error to be thrown`); } }); - + it('should render an element with a script tag', () => { window.scriptTagRun = false; - + const jsxNode = (

@@ -299,7 +299,7 @@ describe('dom renderer cases', () => { it('should render an element with multiple script tags', () => { window.scriptTagRunCount = 0; - + const jsxNode = (

@@ -873,7 +873,7 @@ describe('dom renderer cases', () => { d: 'M0 0L12 12', id: 'backwardSlash' }; - + const circleProps = { id: 'defCircle', cx: '0', diff --git a/test/tests/html.jsx b/test/tests/html.jsx index 75bd571..d7534b8 100644 --- a/test/tests/html.jsx +++ b/test/tests/html.jsx @@ -3,7 +3,7 @@ /** @jsxFrag Fragment */ /* eslint react/jsx-no-useless-fragment: off */ -import { node, html, Fragment } from '../../src'; // eslint-disable-line no-unused-vars +import { node, html, Fragment } from '../../src'; describe('html renderer cases', () => { @@ -44,7 +44,7 @@ describe('html renderer cases', () => { }); it('should escape special characters', () => { - + const jsxNode = (