diff --git a/.prettierignore b/.prettierignore index 46698dfd31ee14..4d4bac53f17fae 100644 --- a/.prettierignore +++ b/.prettierignore @@ -51,6 +51,9 @@ gitignore *.svg *.txt *.mdx +.gitkeep +*__tmpl__ +*__template__ # template files which actually follow a different language's formatting *.hbs diff --git a/jest.config.js b/jest.config.js index e494e264cf309c..f948c631bf49ad 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,3 +1,3 @@ module.exports = { - projects: ['/packages/react-menu', '/packages/react-storybook'], + projects: ['/tools', '/packages/react-menu', '/packages/react-storybook'], }; diff --git a/nx.json b/nx.json index 38b724f1e75df1..42e9df1632c05d 100644 --- a/nx.json +++ b/nx.json @@ -2,10 +2,7 @@ "npmScope": "fluentui", "implicitDependencies": { "workspace.json": "*", - "package.json": { - "dependencies": "*", - "devDependencies": "*" - }, + "package.json": { "dependencies": "*", "devDependencies": "*" }, "nx.json": "*" }, "tasksRunnerOptions": { @@ -18,362 +15,125 @@ } }, "projects": { - "a11y-tests": { - "implicitDependencies": [] - }, - "codesandbox-react-northstar-template": { - "implicitDependencies": [] - }, - "codesandbox-react-template": { - "implicitDependencies": [] - }, - "perf-test": { - "implicitDependencies": [] - }, - "@fluentui/pr-deploy-site": { - "implicitDependencies": [] - }, - "@fluentui/public-docsite": { - "implicitDependencies": [] - }, - "@fluentui/public-docsite-resources": { - "implicitDependencies": [] - }, - "server-rendered-app": { - "implicitDependencies": [] - }, - "ssr-tests": { - "implicitDependencies": [] - }, - "test-bundles": { - "implicitDependencies": [] - }, - "theming-designer": { - "implicitDependencies": [] - }, - "todo-app": { - "implicitDependencies": [] - }, - "vr-tests": { - "implicitDependencies": [] - }, - "@fluentui/a11y-testing": { - "implicitDependencies": [] - }, - "@fluentui/api-docs": { - "implicitDependencies": [] - }, - "@fluentui/azure-themes": { - "implicitDependencies": [] - }, - "@fluentui/babel-make-styles": { - "implicitDependencies": [] - }, - "@fluentui/codemods": { - "implicitDependencies": [] - }, - "@fluentui/common-styles": { - "implicitDependencies": [] - }, - "@fluentui/cra-template": { - "implicitDependencies": [] - }, - "@fluentui/date-time-utilities": { - "implicitDependencies": [] - }, - "@fluentui/dom-utilities": { - "implicitDependencies": [] - }, - "@fluentui/eslint-plugin": { - "implicitDependencies": [] - }, - "@fluentui/example-data": { - "implicitDependencies": [] - }, - "@fluentui/ability-attributes": { - "implicitDependencies": [] - }, - "@fluentui/accessibility": { - "implicitDependencies": [] - }, - "@fluentui/circulars-test": { - "implicitDependencies": [] - }, - "@fluentui/code-sandbox": { - "implicitDependencies": [] - }, - "@fluentui/digest": { - "implicitDependencies": [] - }, - "@fluentui/docs": { - "implicitDependencies": [] - }, - "@fluentui/docs-components": { - "implicitDependencies": [] - }, - "@fluentui/e2e": { - "implicitDependencies": [] - }, - "@fluentui/local-sandbox": { - "implicitDependencies": [] - }, - "@fluentui/noop": { - "implicitDependencies": [] - }, - "@fluentui/perf": { - "implicitDependencies": [] - }, - "@fluentui/perf-test": { - "implicitDependencies": [] - }, - "@fluentui/projects-test": { - "implicitDependencies": [] - }, - "@fluentui/react-bindings": { - "implicitDependencies": [] - }, - "@fluentui/react-builder": { - "implicitDependencies": [] - }, - "@fluentui/react-component-event-listener": { - "implicitDependencies": [] - }, - "@fluentui/react-component-nesting-registry": { - "implicitDependencies": [] - }, - "@fluentui/react-component-ref": { - "implicitDependencies": [] - }, - "@fluentui/react-icons-northstar": { - "implicitDependencies": [] - }, - "@fluentui/react-northstar": { - "implicitDependencies": [] - }, - "@fluentui/react-northstar-emotion-renderer": { - "implicitDependencies": [] - }, - "@fluentui/react-northstar-fela-renderer": { - "implicitDependencies": [] - }, - "@fluentui/react-northstar-prototypes": { - "implicitDependencies": [] - }, - "@fluentui/react-northstar-styles-renderer": { - "implicitDependencies": [] - }, - "@fluentui/react-proptypes": { - "implicitDependencies": [] - }, - "@fluentui/react-telemetry": { - "implicitDependencies": [] - }, - "@fluentui/state": { - "implicitDependencies": [] - }, - "@fluentui/styles": { - "implicitDependencies": [] - }, - "@fluentui/font-icons-mdl2": { - "implicitDependencies": [] - }, - "@fluentui/foundation-legacy": { - "implicitDependencies": [] - }, - "@fluentui/jest-serializer-make-styles": { - "implicitDependencies": [] - }, - "@fluentui/jest-serializer-merge-styles": { - "implicitDependencies": [] - }, - "@fluentui/keyboard-key": { - "implicitDependencies": [] - }, - "@fluentui/make-styles": { - "implicitDependencies": [] - }, - "@fluentui/merge-styles": { - "implicitDependencies": [] - }, - "@fluentui/monaco-editor": { - "implicitDependencies": [] - }, - "@fluentui/public-docsite-setup": { - "implicitDependencies": [] - }, - "@fluentui/react": { - "implicitDependencies": [] - }, - "@fluentui/react-accordion": { - "implicitDependencies": [] - }, - "@fluentui/react-avatar": { - "implicitDependencies": [] - }, - "@fluentui/react-badge": { - "implicitDependencies": [] - }, - "@fluentui/react-button": { - "implicitDependencies": [] - }, - "@fluentui/react-cards": { - "implicitDependencies": [] - }, - "@fluentui/react-charting": { - "implicitDependencies": [] - }, - "@fluentui/react-checkbox": { - "implicitDependencies": [] - }, - "@fluentui/react-components": { - "implicitDependencies": [] - }, - "@fluentui/react-compose": { - "implicitDependencies": [] - }, - "@fluentui/react-conformance": { - "implicitDependencies": [] - }, - "@fluentui/react-context-selector": { - "implicitDependencies": [] - }, - "@fluentui/react-date-time": { - "implicitDependencies": [] - }, - "@fluentui/react-divider": { - "implicitDependencies": [] - }, - "@fluentui/react-docsite-components": { - "implicitDependencies": [] - }, - "@fluentui/react-examples": { - "implicitDependencies": [] - }, - "@fluentui/react-experiments": { - "implicitDependencies": [] - }, - "@fluentui/react-file-type-icons": { - "implicitDependencies": [] - }, - "@fluentui/react-flex": { - "implicitDependencies": [] - }, - "@fluentui/react-focus": { - "implicitDependencies": [] - }, - "@fluentui/react-hooks": { - "implicitDependencies": [] - }, - "@fluentui/react-icon-provider": { - "implicitDependencies": [] - }, - "@fluentui/react-icons-mdl2": { - "implicitDependencies": [] - }, - "@fluentui/react-icons-mdl2-branded": { - "implicitDependencies": [] - }, - "@fluentui/react-image": { - "implicitDependencies": [] - }, - "@fluentui/react-link": { - "implicitDependencies": [] - }, - "@fluentui/react-make-styles": { - "implicitDependencies": [] - }, - "@fluentui/react-menu": { - "implicitDependencies": [] - }, - "@fluentui/react-monaco-editor": { - "implicitDependencies": [] - }, - "@fluentui/react-popup": { - "implicitDependencies": [] - }, - "@fluentui/react-portal": { - "implicitDependencies": [] - }, - "@fluentui/react-positioning": { - "implicitDependencies": [] - }, - "@fluentui/react-provider": { - "implicitDependencies": [] - }, - "@fluentui/react-shared-contexts": { - "implicitDependencies": [] - }, - "@fluentui/react-slider": { - "implicitDependencies": [] - }, - "@fluentui/react-storybook": { - "implicitDependencies": [] - }, - "@fluentui/react-tabs": { - "implicitDependencies": [] - }, - "@fluentui/react-tabster": { - "implicitDependencies": [] - }, - "@fluentui/react-text": { - "implicitDependencies": [] - }, - "@fluentui/react-theme": { - "implicitDependencies": [] - }, - "@fluentui/react-theme-provider": { - "implicitDependencies": [] - }, - "@fluentui/react-toggle": { - "implicitDependencies": [] - }, - "@fluentui/react-tooltip": { - "implicitDependencies": [] - }, - "@fluentui/react-utilities": { - "implicitDependencies": [] - }, - "@fluentui/react-window-provider": { - "implicitDependencies": [] - }, - "@fluentui/scheme-utilities": { - "implicitDependencies": [] - }, - "@fluentui/set-version": { - "implicitDependencies": [] - }, - "@fluentui/storybook": { - "implicitDependencies": [] - }, - "@fluentui/style-utilities": { - "implicitDependencies": [] - }, - "@fluentui/test-utilities": { - "implicitDependencies": [] - }, - "@fluentui/theme": { - "implicitDependencies": [] - }, - "@fluentui/theme-samples": { - "implicitDependencies": [] - }, - "@fluentui/utilities": { - "implicitDependencies": [] - }, - "@fluentui/web-components": { - "implicitDependencies": [] - }, - "@fluentui/webpack-utilities": { - "implicitDependencies": [] - }, - "@fluentui/scripts": { - "implicitDependencies": [] - }, - "@fluentui/react-popover": { - "implicitDependencies": [] - } + "a11y-tests": { "implicitDependencies": [] }, + "codesandbox-react-northstar-template": { "implicitDependencies": [] }, + "codesandbox-react-template": { "implicitDependencies": [] }, + "perf-test": { "implicitDependencies": [] }, + "@fluentui/pr-deploy-site": { "implicitDependencies": [] }, + "@fluentui/public-docsite": { "implicitDependencies": [] }, + "@fluentui/public-docsite-resources": { "implicitDependencies": [] }, + "server-rendered-app": { "implicitDependencies": [] }, + "ssr-tests": { "implicitDependencies": [] }, + "test-bundles": { "implicitDependencies": [] }, + "theming-designer": { "implicitDependencies": [] }, + "todo-app": { "implicitDependencies": [] }, + "vr-tests": { "implicitDependencies": [] }, + "@fluentui/a11y-testing": { "implicitDependencies": [] }, + "@fluentui/api-docs": { "implicitDependencies": [] }, + "@fluentui/azure-themes": { "implicitDependencies": [] }, + "@fluentui/babel-make-styles": { "implicitDependencies": [] }, + "@fluentui/codemods": { "implicitDependencies": [] }, + "@fluentui/common-styles": { "implicitDependencies": [] }, + "@fluentui/cra-template": { "implicitDependencies": [] }, + "@fluentui/date-time-utilities": { "implicitDependencies": [] }, + "@fluentui/dom-utilities": { "implicitDependencies": [] }, + "@fluentui/eslint-plugin": { "implicitDependencies": [] }, + "@fluentui/example-data": { "implicitDependencies": [] }, + "@fluentui/ability-attributes": { "implicitDependencies": [] }, + "@fluentui/accessibility": { "implicitDependencies": [] }, + "@fluentui/circulars-test": { "implicitDependencies": [] }, + "@fluentui/code-sandbox": { "implicitDependencies": [] }, + "@fluentui/digest": { "implicitDependencies": [] }, + "@fluentui/docs": { "implicitDependencies": [] }, + "@fluentui/docs-components": { "implicitDependencies": [] }, + "@fluentui/e2e": { "implicitDependencies": [] }, + "@fluentui/local-sandbox": { "implicitDependencies": [] }, + "@fluentui/noop": { "implicitDependencies": [] }, + "@fluentui/perf": { "implicitDependencies": [] }, + "@fluentui/perf-test": { "implicitDependencies": [] }, + "@fluentui/projects-test": { "implicitDependencies": [] }, + "@fluentui/react-bindings": { "implicitDependencies": [] }, + "@fluentui/react-builder": { "implicitDependencies": [] }, + "@fluentui/react-component-event-listener": { "implicitDependencies": [] }, + "@fluentui/react-component-nesting-registry": { "implicitDependencies": [] }, + "@fluentui/react-component-ref": { "implicitDependencies": [] }, + "@fluentui/react-icons-northstar": { "implicitDependencies": [] }, + "@fluentui/react-northstar": { "implicitDependencies": [] }, + "@fluentui/react-northstar-emotion-renderer": { "implicitDependencies": [] }, + "@fluentui/react-northstar-fela-renderer": { "implicitDependencies": [] }, + "@fluentui/react-northstar-prototypes": { "implicitDependencies": [] }, + "@fluentui/react-northstar-styles-renderer": { "implicitDependencies": [] }, + "@fluentui/react-proptypes": { "implicitDependencies": [] }, + "@fluentui/react-telemetry": { "implicitDependencies": [] }, + "@fluentui/state": { "implicitDependencies": [] }, + "@fluentui/styles": { "implicitDependencies": [] }, + "@fluentui/font-icons-mdl2": { "implicitDependencies": [] }, + "@fluentui/foundation-legacy": { "implicitDependencies": [] }, + "@fluentui/jest-serializer-make-styles": { "implicitDependencies": [] }, + "@fluentui/jest-serializer-merge-styles": { "implicitDependencies": [] }, + "@fluentui/keyboard-key": { "implicitDependencies": [] }, + "@fluentui/make-styles": { "implicitDependencies": [] }, + "@fluentui/merge-styles": { "implicitDependencies": [] }, + "@fluentui/monaco-editor": { "implicitDependencies": [] }, + "@fluentui/public-docsite-setup": { "implicitDependencies": [] }, + "@fluentui/react": { "implicitDependencies": [] }, + "@fluentui/react-accordion": { "implicitDependencies": [] }, + "@fluentui/react-avatar": { "implicitDependencies": [] }, + "@fluentui/react-badge": { "implicitDependencies": [] }, + "@fluentui/react-button": { "implicitDependencies": [] }, + "@fluentui/react-cards": { "implicitDependencies": [] }, + "@fluentui/react-charting": { "implicitDependencies": [] }, + "@fluentui/react-checkbox": { "implicitDependencies": [] }, + "@fluentui/react-components": { "implicitDependencies": [] }, + "@fluentui/react-compose": { "implicitDependencies": [] }, + "@fluentui/react-conformance": { "implicitDependencies": [] }, + "@fluentui/react-context-selector": { "implicitDependencies": [] }, + "@fluentui/react-date-time": { "implicitDependencies": [] }, + "@fluentui/react-divider": { "implicitDependencies": [] }, + "@fluentui/react-docsite-components": { "implicitDependencies": [] }, + "@fluentui/react-examples": { "implicitDependencies": [] }, + "@fluentui/react-experiments": { "implicitDependencies": [] }, + "@fluentui/react-file-type-icons": { "implicitDependencies": [] }, + "@fluentui/react-flex": { "implicitDependencies": [] }, + "@fluentui/react-focus": { "implicitDependencies": [] }, + "@fluentui/react-hooks": { "implicitDependencies": [] }, + "@fluentui/react-icon-provider": { "implicitDependencies": [] }, + "@fluentui/react-icons-mdl2": { "implicitDependencies": [] }, + "@fluentui/react-icons-mdl2-branded": { "implicitDependencies": [] }, + "@fluentui/react-image": { "implicitDependencies": [] }, + "@fluentui/react-link": { "implicitDependencies": [] }, + "@fluentui/react-make-styles": { "implicitDependencies": [] }, + "@fluentui/react-menu": { "implicitDependencies": [] }, + "@fluentui/react-monaco-editor": { "implicitDependencies": [] }, + "@fluentui/react-popup": { "implicitDependencies": [] }, + "@fluentui/react-portal": { "implicitDependencies": [] }, + "@fluentui/react-positioning": { "implicitDependencies": [] }, + "@fluentui/react-provider": { "implicitDependencies": [] }, + "@fluentui/react-shared-contexts": { "implicitDependencies": [] }, + "@fluentui/react-slider": { "implicitDependencies": [] }, + "@fluentui/react-storybook": { "implicitDependencies": [] }, + "@fluentui/react-tabs": { "implicitDependencies": [] }, + "@fluentui/react-tabster": { "implicitDependencies": [] }, + "@fluentui/react-text": { "implicitDependencies": [] }, + "@fluentui/react-theme": { "implicitDependencies": [] }, + "@fluentui/react-theme-provider": { "implicitDependencies": [] }, + "@fluentui/react-toggle": { "implicitDependencies": [] }, + "@fluentui/react-tooltip": { "implicitDependencies": [] }, + "@fluentui/react-utilities": { "implicitDependencies": [] }, + "@fluentui/react-window-provider": { "implicitDependencies": [] }, + "@fluentui/scheme-utilities": { "implicitDependencies": [] }, + "@fluentui/set-version": { "implicitDependencies": [] }, + "@fluentui/storybook": { "implicitDependencies": [] }, + "@fluentui/style-utilities": { "implicitDependencies": [] }, + "@fluentui/test-utilities": { "implicitDependencies": [] }, + "@fluentui/theme": { "implicitDependencies": [] }, + "@fluentui/theme-samples": { "implicitDependencies": [] }, + "@fluentui/utilities": { "implicitDependencies": [] }, + "@fluentui/web-components": { "implicitDependencies": [] }, + "@fluentui/webpack-utilities": { "implicitDependencies": [] }, + "@fluentui/scripts": { "implicitDependencies": [] }, + "@fluentui/react-popover": { "implicitDependencies": [] }, + "workspace-tools": { "tags": [] } }, - "affected": { - "defaultBase": "master" - } + "affected": { "defaultBase": "master" } } diff --git a/package.json b/package.json index 5ab073971df638..6fd6e53d3bea19 100644 --- a/package.json +++ b/package.json @@ -73,6 +73,12 @@ }, "devDependencies": { "@microsoft/api-extractor": "7.13.0", + "@nrwl/cli": "12.1.0", + "@nrwl/devkit": "12.1.0", + "@nrwl/jest": "12.1.0", + "@nrwl/node": "12.1.0", + "@nrwl/tao": "12.1.0", + "@nrwl/workspace": "12.1.0", "@storybook/addon-a11y": "6.0.28", "@storybook/addon-actions": "6.0.28", "@storybook/addon-info": "6.0.0-alpha.2", @@ -84,25 +90,25 @@ "@testing-library/jest-dom": "5.11.9", "@testing-library/react": "10.4.9", "@testing-library/react-hooks": "5.0.3", + "@types/chalk": "2.2.0", "@types/copy-webpack-plugin": "6.4.0", "@types/jest": "24.9.1", "@types/jest-axe": "3.2.2", "@types/node": "10.17.55", "@types/prettier": "1.19.1", + "@types/react": "16.9.42", + "@types/react-dom": "16.9.10", + "@types/tmp": "0.2.0", "@types/webpack-dev-middleware": "4.1.0", "@types/webpack-env": "1.16.0", - "@types/chalk": "2.2.0", "@types/yargs": "13.0.11", - "@types/tmp": "0.2.0", - "@types/react": "16.9.42", - "@types/react-dom": "16.9.10", "beachball": "1.53.1", + "chalk": "2.4.2", "copy-webpack-plugin": "8.1.0", "cross-env": "^5.1.4", "css-loader": "5.0.1", "cypress": "6.6.0", "cypress-real-events": "1.2.0", - "chalk": "2.4.2", "danger": "^6.0.5", "eslint-plugin-es": "4.1.0", "file-loader": "6.2.0", @@ -128,18 +134,16 @@ "storybook-addon-performance": "0.14.0", "style-loader": "2.0.0", "syncpack": "^5.6.10", + "tmp": "0.2.1", "ts-jest": "24.3.0", "ts-loader": "8.0.14", "tsconfig-paths-webpack-plugin": "3.5.1", + "tslib": "2.2.0", "typescript": "4.1.5", "webpack": "5.21.2", "webpack-cli": "4.3.1", "webpack-dev-server": "4.0.0-beta.0", - "tmp": "0.2.1", - "yargs": "13.3.2", - "@nrwl/workspace": "12.1.0", - "@nrwl/cli": "12.1.0", - "@nrwl/tao": "12.1.0" + "yargs": "13.3.2" }, "license": "MIT", "workspaces": { @@ -242,5 +246,6 @@ ] } ] - } + }, + "dependencies": {} } diff --git a/tools/.eslintrc.json b/tools/.eslintrc.json new file mode 100644 index 00000000000000..8a924ff369458e --- /dev/null +++ b/tools/.eslintrc.json @@ -0,0 +1,7 @@ +{ + "extends": ["plugin:@fluentui/eslint-plugin/node"], + "rules": { + "import/no-extraneous-dependencies": "off" + }, + "root": true +} diff --git a/tools/generators/.gitkeep b/tools/generators/.gitkeep new file mode 100644 index 00000000000000..e69de29bb2d1d6 diff --git a/tools/generators/workspace-generator/files/index.spec.ts__tmpl__ b/tools/generators/workspace-generator/files/index.spec.ts__tmpl__ new file mode 100644 index 00000000000000..29644b41f0f8db --- /dev/null +++ b/tools/generators/workspace-generator/files/index.spec.ts__tmpl__ @@ -0,0 +1,20 @@ +import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing'; +import { Tree, readProjectConfiguration } from '@nrwl/devkit'; + +import generator from './index'; +import { <%= className %>GeneratorSchema } from './schema'; + +describe('<%= name %> generator', () => { + let appTree: Tree; + const options: <%= className %>GeneratorSchema = { name: 'test' }; + + beforeEach(() => { + appTree = createTreeWithEmptyWorkspace(); + }); + + it('should run successfully', async () => { + await generator(appTree, options); + const config = readProjectConfiguration(appTree, 'test'); + expect(config).toBeDefined(); + }) +}); diff --git a/tools/generators/workspace-generator/files/index.ts__tmpl__ b/tools/generators/workspace-generator/files/index.ts__tmpl__ new file mode 100644 index 00000000000000..a47ad0f6ed1dc4 --- /dev/null +++ b/tools/generators/workspace-generator/files/index.ts__tmpl__ @@ -0,0 +1,12 @@ +import { Tree, formatFiles, installPackagesTask } from '@nrwl/devkit'; +import { libraryGenerator } from '@nrwl/workspace/generators'; + +import { <%= className %>GeneratorSchema } from './schema' + +export default async function(host: Tree, schema: <%= className %>GeneratorSchema) { + await libraryGenerator(host, {name: schema.name}); + await formatFiles(host); + return () => { + installPackagesTask(host) + } +} diff --git a/tools/generators/workspace-generator/files/schema.json__tmpl__ b/tools/generators/workspace-generator/files/schema.json__tmpl__ new file mode 100644 index 00000000000000..7443669c34ef5d --- /dev/null +++ b/tools/generators/workspace-generator/files/schema.json__tmpl__ @@ -0,0 +1,17 @@ +{ + "$schema": "http://json-schema.org/schema", + "cli": "nx", + "id": "<%= name %>", + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Library name", + "$default": { + "$source": "argv", + "index": 0 + } + } + }, + "required": ["name"] +} diff --git a/tools/generators/workspace-generator/files/schema.ts__tmpl__ b/tools/generators/workspace-generator/files/schema.ts__tmpl__ new file mode 100644 index 00000000000000..388eae5fd4fbf9 --- /dev/null +++ b/tools/generators/workspace-generator/files/schema.ts__tmpl__ @@ -0,0 +1,6 @@ +export interface <%= className %>GeneratorSchema { + /** + * Library name + */ + name: string; +} diff --git a/tools/generators/workspace-generator/index.spec.ts b/tools/generators/workspace-generator/index.spec.ts new file mode 100644 index 00000000000000..771612d315de26 --- /dev/null +++ b/tools/generators/workspace-generator/index.spec.ts @@ -0,0 +1,103 @@ +import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing'; +import { Tree, readJson } from '@nrwl/devkit'; + +import generator from './index'; +import { WorkspaceGeneratorGeneratorSchema } from './schema'; + +describe('workspace-generator generator', () => { + let tree: Tree; + const options: WorkspaceGeneratorGeneratorSchema = { name: 'custom' }; + + beforeEach(() => { + tree = createTreeWithEmptyWorkspace(); + }); + + it('should generate boilerplate', async () => { + await generator(tree, options); + + expect(tree.exists('/tools/generators/custom/index.ts')).toBeTruthy(); + expect(tree.exists('/tools/generators/custom/index.spec.ts')).toBeTruthy(); + expect(tree.exists('/tools/generators/custom/schema.json')).toBeTruthy(); + expect(tree.exists('/tools/generators/custom/schema.ts')).toBeTruthy(); + }); + + it('should generate Schema types', async () => { + await generator(tree, options); + + const content = tree.read('/tools/generators/custom/schema.ts')?.toString(); + + expect(content).toMatchInlineSnapshot(` + "export interface CustomGeneratorSchema { + /** + * Library name + */ + name: string; + } + " + `); + }); + + it('should generate Schema', async () => { + await generator(tree, options); + + const content = readJson(tree, '/tools/generators/custom/schema.json'); + + expect(content.id).toEqual('custom'); + }); + + it('should generate implementation boilerplate', async () => { + await generator(tree, options); + + const content = tree.read('/tools/generators/custom/index.ts')?.toString(); + + expect(content).toMatchInlineSnapshot(` + "import { Tree, formatFiles, installPackagesTask } from '@nrwl/devkit'; + import { libraryGenerator } from '@nrwl/workspace/generators'; + + import { CustomGeneratorSchema } from './schema' + + export default async function(host: Tree, schema: CustomGeneratorSchema) { + await libraryGenerator(host, {name: schema.name}); + await formatFiles(host); + return () => { + installPackagesTask(host) + } + } + " + `); + }); + + it('should generate testing boilerplate', async () => { + await generator(tree, options); + + const content = tree.read('/tools/generators/custom/index.spec.ts')?.toString(); + + expect(content).toMatchInlineSnapshot(` + "import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing'; + import { Tree, readProjectConfiguration } from '@nrwl/devkit'; + + import generator from './index'; + import { CustomGeneratorSchema } from './schema'; + + describe('custom generator', () => { + let appTree: Tree; + const options: CustomGeneratorSchema = { name: 'test' }; + + beforeEach(() => { + appTree = createTreeWithEmptyWorkspace(); + }); + + it('should run successfully', async () => { + await generator(appTree, options); + const config = readProjectConfiguration(appTree, 'test'); + expect(config).toBeDefined(); + }) + }); + " + `); + }); + + it(`should throw when required props are missing`, async () => { + expect(generator(tree, { name: '' })).rejects.toMatchInlineSnapshot(`[Error: name is required]`); + }); +}); diff --git a/tools/generators/workspace-generator/index.ts b/tools/generators/workspace-generator/index.ts new file mode 100644 index 00000000000000..a27b18fab5c810 --- /dev/null +++ b/tools/generators/workspace-generator/index.ts @@ -0,0 +1,51 @@ +import * as path from 'path'; +import { Tree, formatFiles, generateFiles, names, offsetFromRoot } from '@nrwl/devkit'; + +import { WorkspaceGeneratorGeneratorSchema } from './schema'; + +interface NormalizedSchema extends ReturnType {} + +export default async function(host: Tree, schema: WorkspaceGeneratorGeneratorSchema) { + const options = normalizeOptions(host, schema); + + addFiles(host, options); + + if (!options.skipFormat) { + await formatFiles(host); + } +} + +function normalizeOptions(host: Tree, options: WorkspaceGeneratorGeneratorSchema) { + // eslint-disable-next-line eqeqeq + if (options.name.length === 0) { + throw new Error('name is required'); + } + + const defaults = { skipFormat: false }; + const projectRoot = 'tools'; + + return { + ...defaults, + ...options, + projectRoot, + paths: { + generators: path.join(projectRoot, 'generators'), + }, + }; +} + +function addFiles(host: Tree, options: NormalizedSchema) { + const templateOptions = { + ...options, + ...names(options.name), + offsetFromRoot: offsetFromRoot(options.projectRoot), + tmpl: '', + }; + + generateFiles( + host, + path.join(__dirname, 'files'), + path.join(options.paths.generators, options.name), + templateOptions, + ); +} diff --git a/tools/generators/workspace-generator/schema.json b/tools/generators/workspace-generator/schema.json new file mode 100644 index 00000000000000..734cb015721e7e --- /dev/null +++ b/tools/generators/workspace-generator/schema.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/schema", + "cli": "nx", + "id": "workspace-generator", + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Library name", + "$default": { + "$source": "argv", + "index": 0 + }, + "x-prompt": "What name would you like to use for workspace generator?", + "pattern": "^[a-zA-Z].*$" + }, + "skipFormat": { + "description": "Skip formatting files", + "type": "boolean", + "default": false + } + }, + "required": ["name"] +} diff --git a/tools/generators/workspace-generator/schema.ts b/tools/generators/workspace-generator/schema.ts new file mode 100644 index 00000000000000..f6e2ff7e8899d4 --- /dev/null +++ b/tools/generators/workspace-generator/schema.ts @@ -0,0 +1,10 @@ +export interface WorkspaceGeneratorGeneratorSchema { + /** + * Library name + */ + name: string; + /** + * @default false + */ + skipFormat?: boolean; +} diff --git a/tools/jest.config.js b/tools/jest.config.js new file mode 100644 index 00000000000000..fdf9acd20ea51a --- /dev/null +++ b/tools/jest.config.js @@ -0,0 +1,19 @@ +// @ts-check + +/** + * @type {jest.InitialOptions} + */ +module.exports = { + displayName: 'tools', + preset: '../jest.preset.js', + globals: { + 'ts-jest': { + tsConfig: '/tsconfig.json', + diagnostics: false, + }, + }, + transform: { + '^.+\\.tsx?$': 'ts-jest', + }, + coverageDirectory: './coverage', +}; diff --git a/tools/tsconfig.json b/tools/tsconfig.json new file mode 100644 index 00000000000000..adc4274b4103c1 --- /dev/null +++ b/tools/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../tsconfig.base.json", + "compilerOptions": { + "noEmit": true + }, + "include": [], + "files": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + }, + { + "path": "./tsconfig.tools.json" + } + ] +} diff --git a/tools/tsconfig.lib.json b/tools/tsconfig.lib.json new file mode 100644 index 00000000000000..bc58f1dd204954 --- /dev/null +++ b/tools/tsconfig.lib.json @@ -0,0 +1,11 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "target": "ES2015", + "outDir": "../dist/out-tsc", + "types": ["node"] + }, + "exclude": ["**/*.spec.ts"], + "include": ["**/*.ts"] +} diff --git a/tools/tsconfig.spec.json b/tools/tsconfig.spec.json new file mode 100644 index 00000000000000..146f33b2ecb788 --- /dev/null +++ b/tools/tsconfig.spec.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": ["**/*.spec.ts", "**/*.spec.tsx", "**/*.spec.js", "**/*.spec.jsx", "**/*.d.ts"] +} diff --git a/tools/tsconfig.tools.json b/tools/tsconfig.tools.json new file mode 100644 index 00000000000000..eb6744bb99ac47 --- /dev/null +++ b/tools/tsconfig.tools.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.base.json", + "compilerOptions": { + "outDir": "../dist/out-tsc/tools", + "rootDir": ".", + "module": "commonjs", + "target": "es5", + "types": ["node"], + "importHelpers": false + }, + "exclude": ["**/*.spec.ts"], + "include": ["**/*.ts"] +} diff --git a/workspace.json b/workspace.json index 66ab6d91cca838..766c2b69f17742 100644 --- a/workspace.json +++ b/workspace.json @@ -472,6 +472,33 @@ "@fluentui/react-popover": { "root": "packages/react-popover", "projectType": "library" + }, + "workspace-tools": { + "root": "tools", + "sourceRoot": "tools", + "projectType": "library", + "targets": { + "test": { + "executor": "@nrwl/jest:jest", + "outputs": ["coverage/tools"], + "options": { + "jestConfig": "tools/jest.config.js", + "passWithNoTests": true + } + }, + "lint": { + "executor": "@nrwl/workspace:run-commands", + "options": { + "command": "eslint tools/**/*.ts" + } + }, + "type-check": { + "executor": "@nrwl/workspace:run-commands", + "options": { + "command": "tsc -b tools/tsconfig.json" + } + } + } } } } diff --git a/yarn.lock b/yarn.lock index 4a0e081940f45a..badd71fa801de9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2793,6 +2793,32 @@ tmp "~0.2.1" tslib "^2.0.0" +"@nrwl/node@12.1.0": + version "12.1.0" + resolved "https://registry.yarnpkg.com/@nrwl/node/-/node-12.1.0.tgz#0af2a06c522c30468f91f15283745d72de66df96" + integrity sha512-Vhcla87r0XJv35WJhc6kJY47cl7lPdwPbsq/czDxhyp+PZlvl3kiCS6IXb1JGpvecRaogndGBX/A8fv3f+fAIg== + dependencies: + "@nrwl/devkit" "12.1.0" + "@nrwl/jest" "12.1.0" + "@nrwl/linter" "12.1.0" + "@nrwl/workspace" "12.1.0" + circular-dependency-plugin "5.2.0" + copy-webpack-plugin "6.0.3" + fork-ts-checker-webpack-plugin "^3.1.1" + fs-extra "^9.1.0" + glob "7.1.4" + license-webpack-plugin "2.1.2" + rxjs "^6.5.4" + rxjs-for-await "0.0.2" + source-map-support "0.5.16" + tree-kill "1.2.2" + ts-loader "5.4.5" + tsconfig-paths-webpack-plugin "3.2.0" + tslib "^2.0.0" + webpack "4.42.0" + webpack-merge "4.2.1" + webpack-node-externals "1.7.2" + "@nrwl/tao@12.1.0": version "12.1.0" resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-12.1.0.tgz#5527ba8a6fb2e7dfb06c59e1f08936553989360e" @@ -5723,6 +5749,15 @@ "@webassemblyjs/helper-numbers" "1.11.0" "@webassemblyjs/helper-wasm-bytecode" "1.11.0" +"@webassemblyjs/ast@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" + integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== + dependencies: + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + "@webassemblyjs/ast@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" @@ -5737,6 +5772,11 @@ resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz#34d62052f453cd43101d72eab4966a022587947c" integrity sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA== +"@webassemblyjs/floating-point-hex-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" + integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== + "@webassemblyjs/floating-point-hex-parser@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" @@ -5747,6 +5787,11 @@ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz#aaea8fb3b923f4aaa9b512ff541b013ffb68d2d4" integrity sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w== +"@webassemblyjs/helper-api-error@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" + integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== + "@webassemblyjs/helper-api-error@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" @@ -5757,11 +5802,23 @@ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz#d026c25d175e388a7dbda9694e91e743cbe9b642" integrity sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA== +"@webassemblyjs/helper-buffer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" + integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== + "@webassemblyjs/helper-buffer@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== +"@webassemblyjs/helper-code-frame@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" + integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== + dependencies: + "@webassemblyjs/wast-printer" "1.8.5" + "@webassemblyjs/helper-code-frame@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" @@ -5769,11 +5826,24 @@ dependencies: "@webassemblyjs/wast-printer" "1.9.0" +"@webassemblyjs/helper-fsm@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" + integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== + "@webassemblyjs/helper-fsm@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== +"@webassemblyjs/helper-module-context@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" + integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== + dependencies: + "@webassemblyjs/ast" "1.8.5" + mamacro "^0.0.3" + "@webassemblyjs/helper-module-context@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" @@ -5795,6 +5865,11 @@ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz#85fdcda4129902fe86f81abf7e7236953ec5a4e1" integrity sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA== +"@webassemblyjs/helper-wasm-bytecode@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" + integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== + "@webassemblyjs/helper-wasm-bytecode@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" @@ -5810,6 +5885,16 @@ "@webassemblyjs/helper-wasm-bytecode" "1.11.0" "@webassemblyjs/wasm-gen" "1.11.0" +"@webassemblyjs/helper-wasm-section@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" + integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/helper-wasm-section@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" @@ -5827,6 +5912,13 @@ dependencies: "@xtuc/ieee754" "^1.2.0" +"@webassemblyjs/ieee754@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" + integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== + dependencies: + "@xtuc/ieee754" "^1.2.0" + "@webassemblyjs/ieee754@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" @@ -5841,6 +5933,13 @@ dependencies: "@xtuc/long" "4.2.2" +"@webassemblyjs/leb128@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" + integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== + dependencies: + "@xtuc/long" "4.2.2" + "@webassemblyjs/leb128@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" @@ -5853,6 +5952,11 @@ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.0.tgz#86e48f959cf49e0e5091f069a709b862f5a2cadf" integrity sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw== +"@webassemblyjs/utf8@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" + integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== + "@webassemblyjs/utf8@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" @@ -5872,6 +5976,20 @@ "@webassemblyjs/wasm-parser" "1.11.0" "@webassemblyjs/wast-printer" "1.11.0" +"@webassemblyjs/wasm-edit@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" + integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/helper-wasm-section" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-opt" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/wast-printer" "1.8.5" + "@webassemblyjs/wasm-edit@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" @@ -5897,6 +6015,17 @@ "@webassemblyjs/leb128" "1.11.0" "@webassemblyjs/utf8" "1.11.0" +"@webassemblyjs/wasm-gen@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" + integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + "@webassemblyjs/wasm-gen@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" @@ -5918,6 +6047,16 @@ "@webassemblyjs/wasm-gen" "1.11.0" "@webassemblyjs/wasm-parser" "1.11.0" +"@webassemblyjs/wasm-opt@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" + integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/wasm-opt@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" @@ -5940,6 +6079,18 @@ "@webassemblyjs/leb128" "1.11.0" "@webassemblyjs/utf8" "1.11.0" +"@webassemblyjs/wasm-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" + integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + "@webassemblyjs/wasm-parser@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" @@ -5952,6 +6103,18 @@ "@webassemblyjs/leb128" "1.9.0" "@webassemblyjs/utf8" "1.9.0" +"@webassemblyjs/wast-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" + integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/floating-point-hex-parser" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-code-frame" "1.8.5" + "@webassemblyjs/helper-fsm" "1.8.5" + "@xtuc/long" "4.2.2" + "@webassemblyjs/wast-parser@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" @@ -5972,6 +6135,15 @@ "@webassemblyjs/ast" "1.11.0" "@xtuc/long" "4.2.2" +"@webassemblyjs/wast-printer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" + integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + "@xtuc/long" "4.2.2" + "@webassemblyjs/wast-printer@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" @@ -6155,6 +6327,11 @@ acorn@^6.0.1, acorn@^6.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== +acorn@^6.2.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + acorn@^7.1.0: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" @@ -8323,6 +8500,29 @@ cacache@^15.0.0, cacache@^15.0.5: tar "^6.0.2" unique-filename "^1.1.1" +cacache@^15.0.4: + version "15.0.6" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.6.tgz#65a8c580fda15b59150fb76bf3f3a8e45d583099" + integrity sha512-g1WYDMct/jzW+JdWEyjaX2zoBkZ6ZT9VpOyp2I/VMtDsNLffNat3kqPFfi1eDRSK9/SuKGyORDHcQMcPF8sQ/w== + dependencies: + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.0.2" + unique-filename "^1.1.1" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -8851,7 +9051,7 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -circular-dependency-plugin@^5.0.2: +circular-dependency-plugin@5.2.0, circular-dependency-plugin@^5.0.2: version "5.2.0" resolved "https://registry.yarnpkg.com/circular-dependency-plugin/-/circular-dependency-plugin-5.2.0.tgz#e09dbc2dd3e2928442403e2d45b41cea06bc0a93" integrity sha512-7p4Kn/gffhQaavNfyDFg7LS5S/UT1JAjyGd4UqR2+jzoYF02eDkj0Ec3+48TsIa4zghjLY87nQHIh/ecK9qLdw== @@ -9664,6 +9864,23 @@ copy-to-clipboard@3.2.0, copy-to-clipboard@^3.0.8, copy-to-clipboard@^3.2.0: dependencies: toggle-selection "^1.0.6" +copy-webpack-plugin@6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.0.3.tgz#2b3d2bfc6861b96432a65f0149720adbd902040b" + integrity sha512-q5m6Vz4elsuyVEIUXr7wJdIdePWTubsqVbEMvf1WQnHGv0Q+9yPRu7MtYFPt+GBOXRav9lvIINifTQ1vSCs+eA== + dependencies: + cacache "^15.0.4" + fast-glob "^3.2.4" + find-cache-dir "^3.3.1" + glob-parent "^5.1.1" + globby "^11.0.1" + loader-utils "^2.0.0" + normalize-path "^3.0.0" + p-limit "^3.0.1" + schema-utils "^2.7.0" + serialize-javascript "^4.0.0" + webpack-sources "^1.4.3" + copy-webpack-plugin@8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-8.1.0.tgz#0b53170db798ed301439536a02f2868ff63291a0" @@ -12512,7 +12729,7 @@ fast-glob@^3.0.3, fast-glob@^3.1.1, fast-glob@^3.2.2: micromatch "^4.0.2" picomatch "^2.2.1" -fast-glob@^3.2.5: +fast-glob@^3.2.4, fast-glob@^3.2.5: version "3.2.5" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== @@ -13109,7 +13326,7 @@ fork-ts-checker-webpack-plugin@1.5.0: tapable "^1.0.0" worker-rpc "^0.1.0" -fork-ts-checker-webpack-plugin@3.1.1: +fork-ts-checker-webpack-plugin@3.1.1, fork-ts-checker-webpack-plugin@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" integrity sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== @@ -17627,6 +17844,14 @@ libnpmteam@^1.0.1: get-stream "^4.0.0" npm-registry-fetch "^4.0.0" +license-webpack-plugin@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-2.1.2.tgz#63f7c571537a450ec47dc98f5d5ffdbca7b3b14f" + integrity sha512-7poZHRla+ae0eEButlwMrPpkXyhNVBf2EHePYWT0jyLnI6311/OXJkTI2sOIRungRpQgU2oDMpro5bSFPT5F0A== + dependencies: + "@types/webpack-sources" "^0.1.5" + webpack-sources "^1.2.0" + license-webpack-plugin@^2.3.10: version "2.3.10" resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-2.3.10.tgz#6d391b51148efa66e995b82ab7935190d2ebc0b4" @@ -18446,6 +18671,11 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" +mamacro@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" + integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== + map-age-cleaner@^0.1.1, map-age-cleaner@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" @@ -20524,6 +20754,13 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" +p-limit@^3.0.1, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-limit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" @@ -20531,13 +20768,6 @@ p-limit@^3.0.2: dependencies: p-try "^2.0.0" -p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -24224,7 +24454,7 @@ semver@7.3.4, semver@^7.3.4, semver@~7.3.0: dependencies: lru-cache "^6.0.0" -semver@^5.0.3, semver@^5.1.0, semver@^5.5, semver@^5.7.1: +semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.5, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -24815,7 +25045,7 @@ source-map-resolve@^0.6.0: atob "^2.1.2" decode-uri-component "^0.2.0" -source-map-support@^0.5.16, source-map-support@~0.5.12: +source-map-support@0.5.16, source-map-support@^0.5.16, source-map-support@~0.5.12: version "0.5.16" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== @@ -24999,6 +25229,13 @@ ssri@^8.0.0: dependencies: minipass "^3.1.1" +ssri@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== + dependencies: + minipass "^3.1.1" + stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" @@ -26294,6 +26531,11 @@ traverse@^0.6.6: resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc= +tree-kill@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + trim-lines@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-1.1.3.tgz#839514be82428fd9e7ec89e35081afe8f6f93115" @@ -26389,6 +26631,17 @@ ts-jest@24.3.0: semver "^5.5" yargs-parser "10.x" +ts-loader@5.4.5: + version "5.4.5" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-5.4.5.tgz#a0c1f034b017a9344cef0961bfd97cc192492b8b" + integrity sha512-XYsjfnRQCBum9AMRZpk2rTYSVpdZBpZK+kDh0TeT3kxmQNBDVIeUjdPjY5RZry4eIAb8XHc4gYSUiUWPYvzSRw== + dependencies: + chalk "^2.3.0" + enhanced-resolve "^4.0.0" + loader-utils "^1.0.2" + micromatch "^3.1.4" + semver "^5.0.1" + ts-loader@8.0.14: version "8.0.14" resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-8.0.14.tgz#e46ac1f8dcb88808d0b1335d2eae65b74bd78fe8" @@ -26455,6 +26708,15 @@ ts-pnp@^1.1.6: resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== +tsconfig-paths-webpack-plugin@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.2.0.tgz#6e70bd42915ad0efb64d3385163f0c1270f3e04d" + integrity sha512-S/gOOPOkV8rIL4LurZ1vUdYCVgo15iX9ZMJ6wx6w2OgcpT/G4wMyHB6WM+xheSqGMrWKuxFul+aXpCju3wmj/g== + dependencies: + chalk "^2.3.0" + enhanced-resolve "^4.0.0" + tsconfig-paths "^3.4.0" + tsconfig-paths-webpack-plugin@3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.5.1.tgz#e4dbf492a20dca9caab60086ddacb703afc2b726" @@ -26464,7 +26726,7 @@ tsconfig-paths-webpack-plugin@3.5.1: enhanced-resolve "^5.7.0" tsconfig-paths "^3.9.0" -tsconfig-paths@^3.9.0: +tsconfig-paths@^3.4.0, tsconfig-paths@^3.9.0: version "3.9.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== @@ -26479,6 +26741,11 @@ tslib@1.11.2: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.2.tgz#9c79d83272c9a7aaf166f73915c9667ecdde3cc9" integrity sha512-tTSkux6IGPnUGUd1XAZHcpu85MOkIl5zX49pO+jfsie3eP0B6pyhOlLXm3cAC6T7s+euSDDUUV+Acop5WmtkVg== +tslib@2.2.0, tslib@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" + integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== + tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" @@ -26494,11 +26761,6 @@ tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== -tslib@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" - integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== - tsutils@^3.0.0, tsutils@^3.17.1: version "3.17.1" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" @@ -27480,16 +27742,7 @@ watchpack-chokidar2@^2.0.1: dependencies: chokidar "^2.1.8" -watchpack@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.1.tgz#280da0a8718592174010c078c7585a74cd8cd0e2" - integrity sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA== - dependencies: - chokidar "^2.1.8" - graceful-fs "^4.1.2" - neo-async "^2.5.0" - -watchpack@^1.7.4: +watchpack@^1.6.0, watchpack@^1.7.4: version "1.7.5" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== @@ -27500,6 +27753,15 @@ watchpack@^1.7.4: chokidar "^3.4.1" watchpack-chokidar2 "^2.0.1" +watchpack@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.1.tgz#280da0a8718592174010c078c7585a74cd8cd0e2" + integrity sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA== + dependencies: + chokidar "^2.1.8" + graceful-fs "^4.1.2" + neo-async "^2.5.0" + watchpack@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.0.tgz#e63194736bf3aa22026f7b191cd57907b0f9f696" @@ -27673,6 +27935,13 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" +webpack-merge@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.1.tgz#5e923cf802ea2ace4fd5af1d3247368a633489b4" + integrity sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw== + dependencies: + lodash "^4.17.5" + webpack-merge@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" @@ -27688,6 +27957,11 @@ webpack-merge@^5.7.3: clone-deep "^4.0.1" wildcard "^2.0.0" +webpack-node-externals@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-1.7.2.tgz#6e1ee79ac67c070402ba700ef033a9b8d52ac4e3" + integrity sha512-ajerHZ+BJKeCLviLUUmnyd5B4RavLF76uv3cs6KNuO8W+HuQaEs0y0L7o40NQxdPy5w0pcv8Ew7yPUAQG0UdCg== + webpack-sources@^1.2.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" @@ -27718,6 +27992,35 @@ webpack-virtual-modules@^0.2.2: dependencies: debug "^3.0.0" +webpack@4.42.0: + version "4.42.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.0.tgz#b901635dd6179391d90740a63c93f76f39883eb8" + integrity sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/wasm-edit" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + acorn "^6.2.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.1" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.6.0" + webpack-sources "^1.4.1" + webpack@5.21.2: version "5.21.2" resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.21.2.tgz#647507e50d3637695be28af58a6a8246050394e7"