diff --git a/lernaDeploy.js b/lernaDeploy.js index b1c0a86..5be2dca 100644 --- a/lernaDeploy.js +++ b/lernaDeploy.js @@ -14,6 +14,7 @@ const { exec } = require('child_process'); // This regex was obtained from https://semver.org/ test it out here https://regex101.com/r/vkijKf/1/ +/* eslint-disable-next-line unicorn/no-unsafe-regex */ const regex = /^chore\(release\): (0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[A-Za-z-][\dA-Za-z-]*)(?:\.(?:0|[1-9]\d*|\d*[A-Za-z-][\dA-Za-z-]*))*))?(?:\+([\dA-Za-z-]+(?:\.[\dA-Za-z-]+)*))?$/gm; const commitMessage = process.argv[2]; // This is the commit message if (commitMessage != null && regex.test(commitMessage)) { diff --git a/packages/holocron-module-route/__tests__/.eslintrc.json b/packages/holocron-module-route/__tests__/.eslintrc.json index 90b281c..1d01465 100644 --- a/packages/holocron-module-route/__tests__/.eslintrc.json +++ b/packages/holocron-module-route/__tests__/.eslintrc.json @@ -1,3 +1,7 @@ { - "extends": "amex/test" + "extends": "amex/test", + "rules": { + // a number of arguments are functions and need to be set up in the specifications + "unicorn/consistent-function-scoping": 0 + } } diff --git a/packages/holocron-module-route/__tests__/ModuleRouteUtils.spec.jsx b/packages/holocron-module-route/__tests__/ModuleRouteUtils.spec.jsx index ce84c4c..ad02c1a 100644 --- a/packages/holocron-module-route/__tests__/ModuleRouteUtils.spec.jsx +++ b/packages/holocron-module-route/__tests__/ModuleRouteUtils.spec.jsx @@ -17,8 +17,8 @@ import React from 'react'; import { loadModule } from 'holocron'; // eslint-disable-line import/no-unresolved,import/extensions import ModuleRoute from '../src/ModuleRoute'; import { - addToRouteProps as addToRouteProperties, - passChildrenProps as passChildrenProperties, + addToRouteProperties, + passChildrenProperties, getRouteIndex, createModuleRoute, createModuleRouteFromElement, diff --git a/packages/holocron-module-route/src/ModuleRouteUtils.jsx b/packages/holocron-module-route/src/ModuleRouteUtils.jsx index ffc4562..04b889d 100644 --- a/packages/holocron-module-route/src/ModuleRouteUtils.jsx +++ b/packages/holocron-module-route/src/ModuleRouteUtils.jsx @@ -17,7 +17,7 @@ import { createRoutes } from '@americanexpress/one-app-router'; // holocron is a peer dependency import { loadModule } from 'holocron'; // eslint-disable-line import/no-unresolved,import/extensions -export const addToRouteProps = (route, newProperties) => ({ +export const addToRouteProperties = (route, newProperties) => ({ ...route, props: { ...route.props, @@ -25,21 +25,21 @@ export const addToRouteProps = (route, newProperties) => ({ }, }); -export const passChildrenProps = (givenRoutes = [], newProperties) => { +export const passChildrenProperties = (givenRoutes = [], newProperties) => { const routes = typeof givenRoutes === 'function' ? givenRoutes(newProperties.store) : givenRoutes; - return Array.isArray(routes) ? routes.map((route) => addToRouteProps(route, newProperties)) - : [addToRouteProps(routes, newProperties)]; + return Array.isArray(routes) ? routes.map((route) => addToRouteProperties(route, newProperties)) + : [addToRouteProperties(routes, newProperties)]; }; export const getRouteIndex = ( routes, properties -) => routes && createRoutes(passChildrenProps(routes, properties))[0].indexRoute; +) => routes && createRoutes(passChildrenProperties(routes, properties))[0].indexRoute; + +const capitalizePath = (path) => path[0].toUpperCase() + path.slice(1).toLowerCase(); export const createModuleRoute = (defaultProps, properties) => { const { moduleName, store } = properties; - const capitalizePath = (path) => path[0].toUpperCase() + path.slice(1).toLowerCase(); - let moduleRoute = { ...defaultProps, ...properties, @@ -58,7 +58,7 @@ export const createModuleRoute = (defaultProps, properties) => { getChildRoutes(location, callback) { store.dispatch(loadModule(moduleName)) .then( - ({ childRoutes }) => callback(null, passChildrenProps(childRoutes, { store })) + ({ childRoutes }) => callback(null, passChildrenProperties(childRoutes, { store })) ) .catch(callback); }, @@ -100,7 +100,7 @@ export function createModuleRouteFromElement({ type, props }) { const route = createModuleRoute(type.defaultProps, props); if (route.children) { const { store } = props; - const children = passChildrenProps(route.children, { store }); + const children = passChildrenProperties(route.children, { store }); const childRoutes = createRoutesFromReactChildren(children, route); if (childRoutes.length > 0) { diff --git a/packages/holocron-module-route/src/ducks/moduleRoutePrefetch.js b/packages/holocron-module-route/src/ducks/moduleRoutePrefetch.js index 34aaf56..659402e 100644 --- a/packages/holocron-module-route/src/ducks/moduleRoutePrefetch.js +++ b/packages/holocron-module-route/src/ducks/moduleRoutePrefetch.js @@ -16,12 +16,12 @@ import { match } from '@americanexpress/one-app-router'; import { composeModules } from 'holocron'; function matchPromisified(options) { - return new Promise((res, rej) => { + return new Promise((resolve, reject) => { match(options, (error, redirectLocation, renderProperties) => { if (error) { - return rej(error); + return reject(error); } - return res({ renderProps: renderProperties, redirectLocation }); + return resolve({ renderProps: renderProperties, redirectLocation }); }); }); } diff --git a/packages/holocron/__tests__/.eslintrc.json b/packages/holocron/__tests__/.eslintrc.json index 90b281c..1d01465 100644 --- a/packages/holocron/__tests__/.eslintrc.json +++ b/packages/holocron/__tests__/.eslintrc.json @@ -1,3 +1,7 @@ { - "extends": "amex/test" + "extends": "amex/test", + "rules": { + // a number of arguments are functions and need to be set up in the specifications + "unicorn/consistent-function-scoping": 0 + } } diff --git a/packages/holocron/__tests__/holocronModule.spec.jsx b/packages/holocron/__tests__/holocronModule.spec.jsx index b1cbbe0..24d0956 100644 --- a/packages/holocron/__tests__/holocronModule.spec.jsx +++ b/packages/holocron/__tests__/holocronModule.spec.jsx @@ -292,7 +292,10 @@ describe('holocronModule', () => { holocronModule({ name: 'mock-module', load, - shouldModuleReload: (currentProperties, nextProperties) => currentProperties.someParam !== nextProperties.someParam, + shouldModuleReload: ( + currentProperties, + nextProperties + ) => currentProperties.someParam !== nextProperties.someParam, })(() =>
Mock Module
) ); const mockStore = createStore( @@ -326,7 +329,10 @@ describe('holocronModule', () => { holocronModule({ name: 'mock-module', load, - shouldModuleReload: (currentProperties, nextProperties) => currentProperties.someParam !== nextProperties.someParam, + shouldModuleReload: ( + currentProperties, + nextProperties + ) => currentProperties.someParam !== nextProperties.someParam, })(() =>
Mock Module
) ); const mockStore = createStore( diff --git a/packages/holocron/__tests__/loadModule.web.spec.js b/packages/holocron/__tests__/loadModule.web.spec.js index 531631b..146f975 100644 --- a/packages/holocron/__tests__/loadModule.web.spec.js +++ b/packages/holocron/__tests__/loadModule.web.spec.js @@ -24,8 +24,8 @@ const createElementSpy = jest .spyOn(document, 'createElement') .mockImplementation(() => mockElement); jest - .spyOn(document, 'getElementsByTagName') - .mockImplementation(() => [{ appendChild: () => null }]); + .spyOn(document, 'querySelectorAll') + .mockImplementation(() => [{ append: () => null }]); // eslint-disable-next-line no-underscore-dangle window.__holocron_module_bundle_type__ = 'browser'; diff --git a/packages/holocron/__tests__/updateModuleRegistry.spec.js b/packages/holocron/__tests__/updateModuleRegistry.spec.js index 65e5189..b8ebdb3 100644 --- a/packages/holocron/__tests__/updateModuleRegistry.spec.js +++ b/packages/holocron/__tests__/updateModuleRegistry.spec.js @@ -36,7 +36,7 @@ jest.mock('../src/loadModule.node', () => { resolveWith, time ) => new Promise( - (res) => setTimeout(() => res(resolveWith), time) + (resolve) => setTimeout(() => resolve(resolveWith), time) ); const makeUpdatedModule = (moduleName, moduleVersion) => function UpdatedModule() { diff --git a/packages/holocron/src/holocronModule.jsx b/packages/holocron/src/holocronModule.jsx index 0a485ef..ade28f2 100644 --- a/packages/holocron/src/holocronModule.jsx +++ b/packages/holocron/src/holocronModule.jsx @@ -110,7 +110,11 @@ export default function holocronModule({ frozenProps: frozenProperties, currentLoadCount, componentName: getModuleName(WrappedComponent, name), - hocInstance: { mounted: isMounted.current, loadCount: loadCountReference.current, setStatus }, + hocInstance: { + mounted: isMounted.current, + loadCount: loadCountReference.current, + setStatus, + }, }); if ( diff --git a/packages/holocron/src/updateModuleRegistry.js b/packages/holocron/src/updateModuleRegistry.js index 52001fc..1ec6e25 100644 --- a/packages/holocron/src/updateModuleRegistry.js +++ b/packages/holocron/src/updateModuleRegistry.js @@ -45,7 +45,10 @@ export default async function updateModuleRegistry({ const modulesToUpdate = batchModulesToUpdate( getModulesToUpdate(currentModuleMap.modules || {}, nextModuleMap.modules) ); - const flatModulesToUpdate = modulesToUpdate.reduce((accumulator, batch) => [...accumulator, ...batch], []); + const flatModulesToUpdate = modulesToUpdate.reduce( + (accumulator, batch) => [...accumulator, ...batch], + [] + ); const rejectedModules = {}; let successfullyLoadedModules = await modulesToUpdate.reduce(async (accumulator, moduleBatch) => { const previouslyResolvedModules = await accumulator; @@ -82,7 +85,9 @@ export default async function updateModuleRegistry({ return [...previouslyResolvedModules, ...fulfilledModules]; }, []); const rejectedModuleNames = Object.keys(rejectedModules); - const updatedFlatMap = flatModulesToUpdate.filter((module_) => !rejectedModuleNames.includes(module_)); + const updatedFlatMap = flatModulesToUpdate.filter( + (module_) => !rejectedModuleNames.includes(module_) + ); successfullyLoadedModules = successfullyLoadedModules.reduce( (accumulator, module, i) => ({ ...accumulator, diff --git a/packages/iguazu-holocron/__tests__/.eslintrc.json b/packages/iguazu-holocron/__tests__/.eslintrc.json index 90b281c..1d01465 100644 --- a/packages/iguazu-holocron/__tests__/.eslintrc.json +++ b/packages/iguazu-holocron/__tests__/.eslintrc.json @@ -1,3 +1,7 @@ { - "extends": "amex/test" + "extends": "amex/test", + "rules": { + // a number of arguments are functions and need to be set up in the specifications + "unicorn/consistent-function-scoping": 0 + } } diff --git a/scripts/check-versions.js b/scripts/check-versions.js index 90cfe3d..62274e4 100755 --- a/scripts/check-versions.js +++ b/scripts/check-versions.js @@ -34,7 +34,10 @@ function parseVersion(raw) { return raw; } - const match = /^v?(\d+)\.(\d+)\.(\d+)(?:-(.+))?$/.exec(raw.trim()); + const [versionCore, ...prereleaseParts] = raw.trim().split('-'); + const prerelease = prereleaseParts.join('-') || undefined; + + const match = /^v?(\d+)\.(\d+)\.(\d+)$/.exec(versionCore); if (!match) { return null; } @@ -43,7 +46,7 @@ function parseVersion(raw) { major: Number.parseInt(match[1], 10), minor: Number.parseInt(match[2], 10), patch: Number.parseInt(match[3], 10), - prerelease: match[4], + prerelease, }; }