diff --git a/packages/webpack-rule-composer/.npmignore b/packages/webpack-rule-composer/.npmignore deleted file mode 100644 index 85de9cf..0000000 --- a/packages/webpack-rule-composer/.npmignore +++ /dev/null @@ -1 +0,0 @@ -src diff --git a/packages/webpack-rule-composer/__tests__/__snapshots__/index.js.snap b/packages/webpack-rule-composer/__tests__/__snapshots__/index.js.snap deleted file mode 100644 index 7d4e982..0000000 --- a/packages/webpack-rule-composer/__tests__/__snapshots__/index.js.snap +++ /dev/null @@ -1,53 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`getRuleComposer recursively resolves mixed strings and functions 1`] = ` -Array [ - Object { - "test": /i-show-up-twice/, - }, - Object { - "test": /i-show-up-twice/, - }, - Object { - "test": /look-no-further/, - }, -] -`; - -exports[`getRuleComposer ruleComposer recursively resolves rule names to literal rules 1`] = ` -Array [ - Object { - "test": /recursive-look-result/, - }, - Object { - "test": /recursive-harder-result/, - }, - Object { - "test": /look-no-further/, - }, -] -`; - -exports[`getRuleComposer ruleComposer resolves string rule names to literal rules 1`] = ` -Array [ - Object { - "test": /simple-string-result/, - }, -] -`; - -exports[`getRuleComposer supports functions recursively 1`] = ` -Array [ - Object { - "test": /recursive-function-result/, - }, -] -`; - -exports[`getRuleComposer supports functions that return literal rules 1`] = ` -Array [ - Object { - "test": /simple-function-result/, - }, -] -`; diff --git a/packages/webpack-rule-composer/__tests__/index.js b/packages/webpack-rule-composer/__tests__/index.js deleted file mode 100644 index 643c2b3..0000000 --- a/packages/webpack-rule-composer/__tests__/index.js +++ /dev/null @@ -1,66 +0,0 @@ -/* @flow */ - -import type { RuleFn } from '../src'; -import getRuleComposer from '../src'; - -describe('getRuleComposer', () => { - const webpackOptions = {}; - const argv = {}; - const other = {}; - const args = [webpackOptions, argv, other]; - - it('returns a function', () => { - const ruleResolver = () => []; - expect(typeof getRuleComposer(ruleResolver, ...args)).toBe('function'); - }); - - describe('ruleComposer', () => { - it('resolves string rule names to literal rules', () => { - const ruleComposer = getRuleComposer( - () => [{ test: /simple-string-result/ }], - ...args - ); - expect(ruleComposer('string')).toMatchSnapshot(); - }); - - it('recursively resolves rule names to literal rules', () => { - const ruleComposer = getRuleComposer(ruleName => { - if (ruleName === 'recursive-lookup') { - return ['look', 'harder', { test: /look-no-further/ }]; - } else if (ruleName === 'look') { - return [{ test: /recursive-look-result/ }]; - } else { - return [{ test: /recursive-harder-result/ }]; - } - }, ...args); - expect(ruleComposer('recursive-lookup')).toMatchSnapshot(); - }); - }); - - it('supports functions that return literal rules', () => { - const ruleComposer = getRuleComposer(() => [], ...args); - expect( - ruleComposer(() => [{ test: /simple-function-result/ }]) - ).toMatchSnapshot(); - }); - - it('supports functions recursively', () => { - const ruleComposer = getRuleComposer(() => [], ...args); - expect( - ruleComposer(() => () => [{ test: /recursive-function-result/ }]) - ).toMatchSnapshot(); - }); - - it('recursively resolves mixed strings and functions', () => { - const ruleComposer = getRuleComposer(ruleName => { - if (ruleName === 'initial') { - return ['foo', (() => 'foo': RuleFn), { test: /look-no-further/ }]; - } else if (ruleName === 'foo') { - return [{ test: /i-show-up-twice/ }]; - } else { - return []; - } - }, ...args); - expect(ruleComposer('initial')).toMatchSnapshot(); - }); -}); diff --git a/packages/webpack-rule-composer/package.json b/packages/webpack-rule-composer/package.json deleted file mode 100644 index 6740d0c..0000000 --- a/packages/webpack-rule-composer/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "@hs/webpack-rule-composer", - "version": "10.0.0", - "license": "MIT", - "homepage": "https://github.com/HubSpot/asset-bender/tree/master/packages/webpack-rule-composer", - "repository": "github:HubSpot/asset-bender", - "publishConfig": { - "access": "public" - }, - "main": "lib", - "scripts": { - "test": "jest", - "build": "babel src -d lib --root-mode upward", - "prepare": "yarn build --delete-dir-on-start" - } -} diff --git a/packages/webpack-rule-composer/src/index.js b/packages/webpack-rule-composer/src/index.js deleted file mode 100644 index d7ce258..0000000 --- a/packages/webpack-rule-composer/src/index.js +++ /dev/null @@ -1,45 +0,0 @@ -/* @flow */ - -export type RuleRef = string; -export type RuleFn = (...args: Array) => Rule; -export type ConcreteRule = {}; - -export type AbstractRule = RuleRef | RuleFn; -export type Rule = AbstractRule | Array; -export type RuleResolver = (ruleName: string) => Rule; - -export default function getRuleComposer( - ruleResolver: RuleResolver, - ...args: Array -) { - function composeRulesRec(rules: Rule): Array { - if (typeof rules === 'string') { - return composeRulesRec(ruleResolver(rules)); - } else if (typeof rules === 'function') { - return composeRulesRec(rules(...args)); - } else if (Array.isArray(rules)) { - return [].concat( - ...rules.map(rule => { - if (typeof rule === 'string') { - return composeRulesRec(rule); - } else if (typeof rule === 'function') { - return composeRulesRec(rule(...args)); - } else { - return [rule]; - } - }) - ); - } - throw new Error( - `Rule is not an array or cannot be further resolved: ${JSON.stringify( - rules, - null, - 2 - )}` - ); - } - - return (rule: AbstractRule): Array => { - return composeRulesRec(rule); - }; -}