From 17e9e7dcd2c2b43f8f5a5331c38151353bf63802 Mon Sep 17 00:00:00 2001 From: Thomas Allmer Date: Mon, 26 Oct 2020 13:05:20 +0100 Subject: [PATCH] chore: change types workflow --- .changeset/hot-kiwis-allow.md | 11 ++ .github/workflows/release.yml | 2 +- .gitignore | 4 + package.json | 16 ++- .../test-node/integration.test.js | 25 ++-- .../test-node/mpa-integration.test.js | 25 ++-- packages/import-maps-resolve/package.json | 9 +- packages/import-maps-resolve/tsconfig.json | 25 +++- packages/mdjs/index.d.ts | 7 - packages/mdjs/package.json | 5 +- packages/mdjs/{types => src}/global.d.ts | 0 packages/mdjs/tsconfig.json | 23 ++++ packages/polyfills-loader/package.json | 6 +- .../src/inject-polyfills-loader.js | 3 + packages/polyfills-loader/src/utils.js | 2 + packages/polyfills-loader/tsconfig.json | 25 +++- packages/scoped-elements/package.json | 4 +- packages/scoped-elements/tsconfig.json | 23 ++++ packages/semantic-dom-diff/package.json | 3 +- packages/semantic-dom-diff/tsconfig.json | 23 ++++ .../{types => src}/global.d.ts | 0 packages/testing-helpers/package.json | 10 +- .../src/scopedElementsWrapper.js | 2 + packages/testing-helpers/tsconfig.json | 27 ++++ packages/testing/index-no-side-effects.d.ts | 28 ++-- packages/testing/index.d.ts | 32 ++--- packages/testing/index.js | 2 +- scripts/generate-ts-configs.mjs | 113 ++++++++++++++++ tsconfig.browser-base.json | 20 +++ tsconfig.json | 51 ++++--- tsconfig.node-base.json | 31 +++++ workspace-packages.mjs | 10 ++ yarn.lock | 127 ++++++++++++++++-- 33 files changed, 559 insertions(+), 135 deletions(-) create mode 100644 .changeset/hot-kiwis-allow.md delete mode 100644 packages/mdjs/index.d.ts rename packages/mdjs/{types => src}/global.d.ts (100%) create mode 100644 packages/mdjs/tsconfig.json create mode 100644 packages/scoped-elements/tsconfig.json create mode 100644 packages/semantic-dom-diff/tsconfig.json rename packages/storybook-addon-markdown-docs/{types => src}/global.d.ts (100%) create mode 100644 packages/testing-helpers/tsconfig.json create mode 100644 scripts/generate-ts-configs.mjs create mode 100644 tsconfig.browser-base.json create mode 100644 tsconfig.node-base.json create mode 100644 workspace-packages.mjs diff --git a/.changeset/hot-kiwis-allow.md b/.changeset/hot-kiwis-allow.md new file mode 100644 index 000000000..980728716 --- /dev/null +++ b/.changeset/hot-kiwis-allow.md @@ -0,0 +1,11 @@ +--- +'@import-maps/resolve': patch +'@mdjs/core': patch +'polyfills-loader': patch +'@open-wc/scoped-elements': patch +'@open-wc/semantic-dom-diff': patch +'@open-wc/testing': patch +'@open-wc/testing-helpers': patch +--- + +Change type distribution workflow diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6ebfbca9a..32c078a4e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -40,7 +40,7 @@ jobs: run: yarn --frozen-lockfile - name: Build types - run: yarn build:types + run: yarn types - name: Create Release Pull Request or Publish to npm id: changesets diff --git a/.gitignore b/.gitignore index 180e89a35..1b28250e0 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,10 @@ ## code coverage folders coverage/ +## generated types +packages/*/types +tsconfig.tsbuildinfo + ## npm node_modules !packages/es-dev-server/test/**/node_modules diff --git a/package.json b/package.json index 7f009890d..3777ab847 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,6 @@ "private": true, "license": "MIT", "scripts": { - "build:types": "tsc -p tsconfig.build.types.json", "codelabs:build": "node ./packages/codelabs/build-codelabs.js", "docs:build": "rimraf _site && node cli-build.js", "docs:serve-build": "node packages/es-dev-server/dist/cli.js -o docs/", @@ -14,10 +13,12 @@ "lint": "run-p lint:*", "lint:eslint": "eslint --ext .js,.html .", "lint:prettier": "prettier \"**/*.{js,md}\" \"**/package.json\" --check", - "lint:types": "tsc", + "lint:types": "npm run types", "lint:versions": "node ./scripts/lint-versions.js", - "postinstall": "patch-package", + "postinstall": "patch-package && npm run setup", "release": "changeset publish && yarn format", + "setup": "npm run setup:ts-configs", + "setup:ts-configs": "node scripts/generate-ts-configs.mjs", "site:build": "npm run docs:build && node scripts/workspaces-scripts-bin.mjs site:build", "site:start": "npm run docs:start", "start": "npm run docs:start", @@ -25,6 +26,10 @@ "test:node": "mocha \"packages/*/test-node/**/*.test.{ts,js,mjs,cjs}\" --exit --retries 3", "test:node:watch": "mocha \"packages/*/test-node/**/*.test.{ts,js,mjs,cjs}\" --watch", "test:web": "web-test-runner", + "types": "run-s types:clear types:copy types:build", + "types:build": "tsc --build", + "types:clear": "rimraf packages/*/types/", + "types:copy": "node scripts/workspaces-scripts-bin.mjs types:copy", "update-dependency": "node scripts/update-dependency.js" }, "dependencies": { @@ -41,11 +46,13 @@ "@types/eslint": "^7.2.4", "@types/estree": "^0.0.45", "@types/parse5-htmlparser2-tree-adapter": "^5.0.1", + "@web/dev-server": "^0.0.15", "@web/test-runner": "^0.9.5", "@web/test-runner-playwright": "^0.6.4", "babel-eslint": "^10.0.3", "chai": "^4.2.0", "concurrently": "^5.2.0", + "copyfiles": "^2.4.0", "core-js": "2.6.10", "eslint": "^7.6.0", "eslint-config-airbnb-base": "^14.0.0", @@ -68,8 +75,7 @@ "rollup": "^2.7.2", "rollup-plugin-copy": "^3.3.0", "sinon": "^7.4.1", - "typescript": "~4.0.3", - "webpack-merge": "^4.1.5" + "typescript": "~4.0.3" }, "resolutions": { "@types/estree": "0.0.45" diff --git a/packages/building-rollup/test-node/integration.test.js b/packages/building-rollup/test-node/integration.test.js index adf799889..64fa5ec71 100644 --- a/packages/building-rollup/test-node/integration.test.js +++ b/packages/building-rollup/test-node/integration.test.js @@ -5,39 +5,38 @@ const path = require('path'); const fs = require('fs'); const rimraf = require('rimraf'); const { rollup } = require('rollup'); -const { startServer, createConfig } = require('es-dev-server'); +const { startDevServer } = require('@web/dev-server'); const rootDir = path.resolve(__dirname, '..', 'dist'); describe('integration tests', () => { let server; - let serverConfig; /** @type {import('puppeteer').Browser} */ let browser; before(async () => { - serverConfig = createConfig({ - port: 8081, - rootDir, + server = await startDevServer({ + config: { + port: 8081, + rootDir, + }, + readCliArgs: false, + readFileConfig: false, + logStartMessage: false, + clearTerminalOnReload: false, }); - - ({ server } = await startServer(serverConfig)); browser = await puppeteer.launch(); rimraf.sync(rootDir); }); after(async () => { await browser.close(); - await new Promise(resolve => - server.close(() => { - resolve(); - }), - ); + await server.stop(); }); ['js/rollup.spa.config.js', 'js/rollup.spa-nomodule.config.js'].forEach(testCase => { describe(`testcase ${testCase}`, function describe() { - this.timeout(20000); + this.timeout(30000); let page; before(async () => { diff --git a/packages/building-rollup/test-node/mpa-integration.test.js b/packages/building-rollup/test-node/mpa-integration.test.js index 9ad592bd2..ec1aad063 100644 --- a/packages/building-rollup/test-node/mpa-integration.test.js +++ b/packages/building-rollup/test-node/mpa-integration.test.js @@ -5,38 +5,37 @@ const path = require('path'); const fs = require('fs'); const rimraf = require('rimraf'); const { rollup } = require('rollup'); -const { startServer, createConfig } = require('es-dev-server'); +const { startDevServer } = require('@web/dev-server'); const rootDir = path.resolve(__dirname, '..', 'dist'); describe('integration tests', () => { let server; - let serverConfig; /** @type {import('puppeteer').Browser} */ let browser; before(async () => { - serverConfig = createConfig({ - port: 8081, - rootDir, + server = await startDevServer({ + config: { + port: 8081, + rootDir, + }, + readCliArgs: false, + readFileConfig: false, + logStartMessage: false, + clearTerminalOnReload: false, }); - - ({ server } = await startServer(serverConfig)); browser = await puppeteer.launch(); rimraf.sync(rootDir); }); after(async () => { await browser.close(); - await new Promise(resolve => - server.close(() => { - resolve(); - }), - ); + await server.stop(); }); describe(`Mpa Config`, function describe() { - this.timeout(20000); + this.timeout(30000); let page; before(async () => { diff --git a/packages/import-maps-resolve/package.json b/packages/import-maps-resolve/package.json index 574413e78..b6755de2f 100644 --- a/packages/import-maps-resolve/package.json +++ b/packages/import-maps-resolve/package.json @@ -17,15 +17,18 @@ "scripts": { "prepublishOnly": "../../scripts/insert-header.js", "test": "npm run test:node", - "test:node": "mocha test/run-tests.js" + "test:node": "mocha test/run-tests.js", + "types:copy": "copyfiles \"./src/**/*.d.ts\" \"./*.d.ts\" types" }, "files": [ "*.d.ts", "*.js", - "src" + "src", + "types" ], "keywords": [ "import-map", "import-maps" - ] + ], + "types": "types/index.d.ts" } diff --git a/packages/import-maps-resolve/tsconfig.json b/packages/import-maps-resolve/tsconfig.json index e3a3ad6ea..048af6cc1 100644 --- a/packages/import-maps-resolve/tsconfig.json +++ b/packages/import-maps-resolve/tsconfig.json @@ -1,6 +1,23 @@ +// Don't edit this file directly. It is generated by /scripts/update-package-configs.ts + { - "extends": "../../tsconfig.json", + "extends": "../../tsconfig.node-base.json", "compilerOptions": { - "strict": true - } -} + "module": "commonjs", + "outDir": "./types", + "rootDir": ".", + "composite": true, + "allowJs": true, + "checkJs": true, + "emitDeclarationOnly": true + }, + "references": [], + "include": [ + "src", + "*.js" + ], + "exclude": [ + "dist", + "types" + ] +} \ No newline at end of file diff --git a/packages/mdjs/index.d.ts b/packages/mdjs/index.d.ts deleted file mode 100644 index 42bb59263..000000000 --- a/packages/mdjs/index.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { mdjsParse } from './src/mdjsParse'; -import { mdjsStoryParse } from './src/mdjsStoryParse'; -import { mdjsDocPage } from './src/mdjsDocPage'; -import { resolveToUnpkg } from './src/resolveToUnpkg'; - -export { MarkdownResult, ParseResult, Story, ProcessResult, MdjsProcessPlugin } from './src/types'; -export { mdjsParse, mdjsStoryParse, mdjsDocPage, resolveToUnpkg }; diff --git a/packages/mdjs/package.json b/packages/mdjs/package.json index c1c15a77e..c11397059 100644 --- a/packages/mdjs/package.json +++ b/packages/mdjs/package.json @@ -21,7 +21,8 @@ "start:stories": "node ../es-dev-server/dist/cli.js -c demo/stories/server.js --root-dir ../../", "test": "npm run test:node", "test:node": "mocha test-node", - "test:watch": "mocha test-node --watch" + "test:watch": "mocha test-node --watch", + "types:copy": "copyfiles -f \"./types-global/**/*.d.ts\" types" }, "files": [ "*.d.ts", @@ -61,5 +62,5 @@ "remark-slug": "^5.1.2", "remark-stringify": "^7.0.4" }, - "types": "index.d.ts" + "types": "./types/index.d.ts" } diff --git a/packages/mdjs/types/global.d.ts b/packages/mdjs/src/global.d.ts similarity index 100% rename from packages/mdjs/types/global.d.ts rename to packages/mdjs/src/global.d.ts diff --git a/packages/mdjs/tsconfig.json b/packages/mdjs/tsconfig.json new file mode 100644 index 000000000..048af6cc1 --- /dev/null +++ b/packages/mdjs/tsconfig.json @@ -0,0 +1,23 @@ +// Don't edit this file directly. It is generated by /scripts/update-package-configs.ts + +{ + "extends": "../../tsconfig.node-base.json", + "compilerOptions": { + "module": "commonjs", + "outDir": "./types", + "rootDir": ".", + "composite": true, + "allowJs": true, + "checkJs": true, + "emitDeclarationOnly": true + }, + "references": [], + "include": [ + "src", + "*.js" + ], + "exclude": [ + "dist", + "types" + ] +} \ No newline at end of file diff --git a/packages/polyfills-loader/package.json b/packages/polyfills-loader/package.json index 7485a6b2d..2a6e5cabc 100644 --- a/packages/polyfills-loader/package.json +++ b/packages/polyfills-loader/package.json @@ -22,7 +22,8 @@ "test": "npm run test:node", "test:node": "mocha test/**/*.test.js test/**/*.test.js", "test:update-snapshots": "mocha test/**/*.test.js test/**/*.test.js --update-snapshots", - "test:watch": "mocha test/**/*.test.js test/**/*.test.js --watch" + "test:watch": "mocha test/**/*.test.js test/**/*.test.js --watch", + "types:copy": "copyfiles \"./src/**/*.d.ts\" \"./*.d.ts\" types" }, "files": [ "index.d.ts", @@ -50,5 +51,6 @@ "@types/babel__core": "^7.1.3", "@types/parse5": "^5.0.2", "@types/valid-url": "^1.0.2" - } + }, + "types": "types/index.d.ts" } diff --git a/packages/polyfills-loader/src/inject-polyfills-loader.js b/packages/polyfills-loader/src/inject-polyfills-loader.js index a5fdb981f..74edbdc42 100644 --- a/packages/polyfills-loader/src/inject-polyfills-loader.js +++ b/packages/polyfills-loader/src/inject-polyfills-loader.js @@ -11,7 +11,9 @@ const { insertAfter, append, cloneNode, + // @ts-ignore } = require('@open-wc/building-utils/dom5-fork'); +// @ts-ignore const { createScript, createElement, findImportMapScripts } = require('@open-wc/building-utils'); const { createPolyfillsLoader } = require('./create-polyfills-loader'); const { hasFileOfType, fileTypes } = require('./utils'); @@ -70,6 +72,7 @@ function injectLoaderScript(bodyAst, polyfillsLoader) { * @param {PolyfillsLoaderConfig} cfg */ function injectPrefetchLinks(headAst, cfg) { + // @ts-ignore for (const file of cfg.modern.files) { const { path } = file; const href = path.startsWith('.') || path.startsWith('/') ? path : `./${path}`; diff --git a/packages/polyfills-loader/src/utils.js b/packages/polyfills-loader/src/utils.js index b55813401..dd5de2016 100644 --- a/packages/polyfills-loader/src/utils.js +++ b/packages/polyfills-loader/src/utils.js @@ -3,6 +3,7 @@ /** @typedef {import('./types').FileType} FileType */ /** @typedef {import('./types').PolyfillsLoaderConfig} PolyfillsLoaderConfig */ +// @ts-ignore const { getAttribute } = require('@open-wc/building-utils/dom5-fork'); const crypto = require('crypto'); @@ -54,6 +55,7 @@ function getScriptFileType(script) { */ function hasFileOfType(cfg, type) { return ( + // @ts-ignore cfg.modern.files.some(f => f.type === type) || (cfg.legacy && cfg.legacy.some(e => e.files.some(f => f.type === type))) ); diff --git a/packages/polyfills-loader/tsconfig.json b/packages/polyfills-loader/tsconfig.json index e3a3ad6ea..048af6cc1 100644 --- a/packages/polyfills-loader/tsconfig.json +++ b/packages/polyfills-loader/tsconfig.json @@ -1,6 +1,23 @@ +// Don't edit this file directly. It is generated by /scripts/update-package-configs.ts + { - "extends": "../../tsconfig.json", + "extends": "../../tsconfig.node-base.json", "compilerOptions": { - "strict": true - } -} + "module": "commonjs", + "outDir": "./types", + "rootDir": ".", + "composite": true, + "allowJs": true, + "checkJs": true, + "emitDeclarationOnly": true + }, + "references": [], + "include": [ + "src", + "*.js" + ], + "exclude": [ + "dist", + "types" + ] +} \ No newline at end of file diff --git a/packages/scoped-elements/package.json b/packages/scoped-elements/package.json index c404e03bf..dff40e531 100644 --- a/packages/scoped-elements/package.json +++ b/packages/scoped-elements/package.json @@ -24,7 +24,8 @@ "start:no-scope": "es-dev-server -c demo/no-scope/server.js", "start:with-scope": "es-dev-server -c demo/with-scope/server.js", "test": "cd ../../ && yarn test:browser --grep \"packages/scoped-elements/test/*.test.js\"", - "test:watch": "cd ../../ && yarn test:browser:watch --grep \"packages/scoped-elements/test/*.test.js\"" + "test:watch": "cd ../../ && yarn test:browser:watch --grep \"packages/scoped-elements/test/*.test.js\"", + "types:copy": "copyfiles \"./src/**/*.d.ts\" \"./*.d.ts\" types" }, "files": [ "*.d.ts", @@ -42,5 +43,6 @@ "@open-wc/dedupe-mixin": "^1.3.0", "lit-html": "^1.0.0" }, + "types": "types/index.d.ts", "sideEffects": false } diff --git a/packages/scoped-elements/tsconfig.json b/packages/scoped-elements/tsconfig.json new file mode 100644 index 000000000..da4950839 --- /dev/null +++ b/packages/scoped-elements/tsconfig.json @@ -0,0 +1,23 @@ +// Don't edit this file directly. It is generated by /scripts/update-package-configs.ts + +{ + "extends": "../../tsconfig.browser-base.json", + "compilerOptions": { + "module": "ESNext", + "outDir": "./types", + "rootDir": ".", + "composite": true, + "allowJs": true, + "checkJs": true, + "emitDeclarationOnly": true + }, + "references": [], + "include": [ + "src", + "*.js" + ], + "exclude": [ + "dist", + "types" + ] +} \ No newline at end of file diff --git a/packages/semantic-dom-diff/package.json b/packages/semantic-dom-diff/package.json index 3cfb6ae75..38c2c326e 100644 --- a/packages/semantic-dom-diff/package.json +++ b/packages/semantic-dom-diff/package.json @@ -29,5 +29,6 @@ ], "dependencies": { "@types/chai": "^4.2.11" - } + }, + "types": "types/index.d.ts" } diff --git a/packages/semantic-dom-diff/tsconfig.json b/packages/semantic-dom-diff/tsconfig.json new file mode 100644 index 000000000..da4950839 --- /dev/null +++ b/packages/semantic-dom-diff/tsconfig.json @@ -0,0 +1,23 @@ +// Don't edit this file directly. It is generated by /scripts/update-package-configs.ts + +{ + "extends": "../../tsconfig.browser-base.json", + "compilerOptions": { + "module": "ESNext", + "outDir": "./types", + "rootDir": ".", + "composite": true, + "allowJs": true, + "checkJs": true, + "emitDeclarationOnly": true + }, + "references": [], + "include": [ + "src", + "*.js" + ], + "exclude": [ + "dist", + "types" + ] +} \ No newline at end of file diff --git a/packages/storybook-addon-markdown-docs/types/global.d.ts b/packages/storybook-addon-markdown-docs/src/global.d.ts similarity index 100% rename from packages/storybook-addon-markdown-docs/types/global.d.ts rename to packages/storybook-addon-markdown-docs/src/global.d.ts diff --git a/packages/testing-helpers/package.json b/packages/testing-helpers/package.json index 59a296109..b571052d7 100644 --- a/packages/testing-helpers/package.json +++ b/packages/testing-helpers/package.json @@ -14,13 +14,11 @@ "author": "open-wc", "homepage": "https://github.com/open-wc/open-wc/tree/master/packages/testing-helpers", "module": "index.js", - "scripts": { - "prepublishOnly": "../../scripts/insert-header.js" - }, "files": [ "*.d.ts", "*.js", - "src" + "src", + "types" ], "keywords": [ "testing", @@ -33,7 +31,5 @@ "lit-element": "^2.2.1", "lit-html": "^1.0.0" }, - "devDependencies": { - "webpack-merge": "^4.1.5" - } + "types": "types/index.d.ts" } diff --git a/packages/testing-helpers/src/scopedElementsWrapper.js b/packages/testing-helpers/src/scopedElementsWrapper.js index 2f83c6bd2..1f32dba77 100644 --- a/packages/testing-helpers/src/scopedElementsWrapper.js +++ b/packages/testing-helpers/src/scopedElementsWrapper.js @@ -53,6 +53,7 @@ class ScopedElementsTestWrapper extends ScopedElementsMixin(LitElement) { super.firstUpdated(_changed); Object.keys(this.scopedElements).forEach(key => + // @ts-ignore this.defineScopedElement(key, this.scopedElements[key]), ); } @@ -79,6 +80,7 @@ const getWrapperUniqueName = (counter = 0) => { const wrapperTagName = getWrapperUniqueName(); +// @ts-ignore customElements.define(wrapperTagName, ScopedElementsTestWrapper); /** diff --git a/packages/testing-helpers/tsconfig.json b/packages/testing-helpers/tsconfig.json new file mode 100644 index 000000000..d12f36ff1 --- /dev/null +++ b/packages/testing-helpers/tsconfig.json @@ -0,0 +1,27 @@ +// Don't edit this file directly. It is generated by /scripts/update-package-configs.ts + +{ + "extends": "../../tsconfig.browser-base.json", + "compilerOptions": { + "module": "ESNext", + "outDir": "./types", + "rootDir": ".", + "composite": true, + "allowJs": true, + "checkJs": true, + "emitDeclarationOnly": true + }, + "references": [ + { + "path": "../scoped-elements/tsconfig.json" + } + ], + "include": [ + "src", + "*.js" + ], + "exclude": [ + "dist", + "types" + ] +} \ No newline at end of file diff --git a/packages/testing/index-no-side-effects.d.ts b/packages/testing/index-no-side-effects.d.ts index 1c766b602..4c37db9bb 100644 --- a/packages/testing/index-no-side-effects.d.ts +++ b/packages/testing/index-no-side-effects.d.ts @@ -1,17 +1,17 @@ -export { html } from '@open-wc/testing-helpers/index-no-side-effects.js'; -export { unsafeStatic } from '@open-wc/testing-helpers/index-no-side-effects.js'; -export { triggerBlurFor } from '@open-wc/testing-helpers/index-no-side-effects.js'; -export { triggerFocusFor } from '@open-wc/testing-helpers/index-no-side-effects.js'; -export { oneEvent } from '@open-wc/testing-helpers/index-no-side-effects.js'; -export { isIE } from '@open-wc/testing-helpers/index-no-side-effects.js'; -export { defineCE } from '@open-wc/testing-helpers/index-no-side-effects.js'; -export { aTimeout } from '@open-wc/testing-helpers/index-no-side-effects.js'; -export { litFixture } from '@open-wc/testing-helpers/index-no-side-effects.js'; -export { litFixtureSync } from '@open-wc/testing-helpers/index-no-side-effects.js'; -export { fixture } from '@open-wc/testing-helpers/index-no-side-effects.js'; -export { fixtureSync } from '@open-wc/testing-helpers/index-no-side-effects.js'; -export { fixtureCleanup } from '@open-wc/testing-helpers/index-no-side-effects.js'; -export { elementUpdated } from '@open-wc/testing-helpers/index-no-side-effects.js'; +export { html } from '@open-wc/testing-helpers/types/index-no-side-effects'; +export { unsafeStatic } from '@open-wc/testing-helpers/types/index-no-side-effects'; +export { triggerBlurFor } from '@open-wc/testing-helpers/types/index-no-side-effects'; +export { triggerFocusFor } from '@open-wc/testing-helpers/types/index-no-side-effects'; +export { oneEvent } from '@open-wc/testing-helpers/types/index-no-side-effects'; +export { isIE } from '@open-wc/testing-helpers/types/index-no-side-effects'; +export { defineCE } from '@open-wc/testing-helpers/types/index-no-side-effects'; +export { aTimeout } from '@open-wc/testing-helpers/types/index-no-side-effects'; +export { litFixture } from '@open-wc/testing-helpers/types/index-no-side-effects'; +export { litFixtureSync } from '@open-wc/testing-helpers/types/index-no-side-effects'; +export { fixture } from '@open-wc/testing-helpers/types/index-no-side-effects'; +export { fixtureSync } from '@open-wc/testing-helpers/types/index-no-side-effects'; +export { fixtureCleanup } from '@open-wc/testing-helpers/types/index-no-side-effects'; +export { elementUpdated } from '@open-wc/testing-helpers/types/index-no-side-effects'; import chai from 'chai'; diff --git a/packages/testing/index.d.ts b/packages/testing/index.d.ts index 90630533f..1d1eaecf7 100644 --- a/packages/testing/index.d.ts +++ b/packages/testing/index.d.ts @@ -1,21 +1,21 @@ /// -export { html } from '@open-wc/testing-helpers/index.js'; -export { unsafeStatic } from '@open-wc/testing-helpers/index.js'; -export { triggerBlurFor } from '@open-wc/testing-helpers/index.js'; -export { triggerFocusFor } from '@open-wc/testing-helpers/index.js'; -export { oneEvent } from '@open-wc/testing-helpers/index.js'; -export { isIE } from '@open-wc/testing-helpers/index.js'; -export { defineCE } from '@open-wc/testing-helpers/index.js'; -export { aTimeout } from '@open-wc/testing-helpers/index.js'; -export { nextFrame } from '@open-wc/testing-helpers/index.js'; -export { litFixture } from '@open-wc/testing-helpers/index.js'; -export { litFixtureSync } from '@open-wc/testing-helpers/index.js'; -export { fixture } from '@open-wc/testing-helpers/index.js'; -export { fixtureSync } from '@open-wc/testing-helpers/index.js'; -export { fixtureCleanup } from '@open-wc/testing-helpers/index.js'; -export { elementUpdated } from '@open-wc/testing-helpers/index.js'; -export { waitUntil } from '@open-wc/testing-helpers/index.js'; +export { html } from '@open-wc/testing-helpers'; +export { unsafeStatic } from '@open-wc/testing-helpers'; +export { triggerBlurFor } from '@open-wc/testing-helpers'; +export { triggerFocusFor } from '@open-wc/testing-helpers'; +export { oneEvent } from '@open-wc/testing-helpers'; +export { isIE } from '@open-wc/testing-helpers'; +export { defineCE } from '@open-wc/testing-helpers'; +export { aTimeout } from '@open-wc/testing-helpers'; +export { nextFrame } from '@open-wc/testing-helpers'; +export { litFixture } from '@open-wc/testing-helpers'; +export { litFixtureSync } from '@open-wc/testing-helpers'; +export { fixture } from '@open-wc/testing-helpers'; +export { fixtureSync } from '@open-wc/testing-helpers'; +export { fixtureCleanup } from '@open-wc/testing-helpers'; +export { elementUpdated } from '@open-wc/testing-helpers'; +export { waitUntil } from '@open-wc/testing-helpers'; import chai from 'chai'; diff --git a/packages/testing/index.js b/packages/testing/index.js index 7685635ec..d9ffbc243 100644 --- a/packages/testing/index.js +++ b/packages/testing/index.js @@ -18,7 +18,7 @@ export { fixtureCleanup, elementUpdated, waitUntil, -} from '@open-wc/testing-helpers/index.js'; +} from '@open-wc/testing-helpers'; // @ts-ignore const { expect, should, assert } = chai; diff --git a/scripts/generate-ts-configs.mjs b/scripts/generate-ts-configs.mjs new file mode 100644 index 000000000..9dea44f3c --- /dev/null +++ b/scripts/generate-ts-configs.mjs @@ -0,0 +1,113 @@ +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import { packages } from '../workspace-packages.mjs'; +import merge from 'deepmerge'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const TSCONFIG_COMMENT = `// Don't edit this file directly. It is generated by /scripts/update-package-configs.ts\n\n`; + +const packagesRoot = path.join(__dirname, '..', 'packages'); + +const packageJSONMap = new Map(); +const packageDirnameMap = new Map(); +const internalDependencyMap = new Map(); + +// collect package json for all packages +packages.forEach(pkg => { + const packageJSONPath = path.join(packagesRoot, pkg.name, 'package.json'); + if (!fs.existsSync(packageJSONPath)) { + console.error(); + console.error(`Could not find package.json: ${packageJSONPath}`); + console.error(); + process.exit(1); + } + + const packageJSONData = JSON.parse(fs.readFileSync(packageJSONPath).toString()); + const packageName = packageJSONData.name; + packageDirnameMap.set(packageName, pkg.name); + packageJSONMap.set(packageName, packageJSONData); +}); + +// collect initial cross package dependencies info +packageDirnameMap.forEach((_packageDirname, packageName) => { + const { dependencies, devDependencies } = packageJSONMap.get(packageName); + + const internalDependencies = [ + ...(dependencies ? Object.keys(dependencies) : []), + ...(devDependencies ? Object.keys(devDependencies) : []), + ].filter(dep => packageDirnameMap.has(dep)); + + internalDependencyMap.set(packageName, internalDependencies); +}); + +function resolveInternalDependencies(dependencies) { + const childDeps = []; + + for (const idep of dependencies) { + const deps = internalDependencyMap.get(idep); + const res = resolveInternalDependencies(deps); + for (const jdep of res) { + childDeps.push(jdep); + } + } + const resolved = childDeps.concat(dependencies); + // remove all duplicated after the first appearance + return resolved.filter((item, idx) => resolved.indexOf(item) === idx); +} + +packageDirnameMap.forEach((packageDirname, packageName) => { + const pkg = packages.find(pkg => pkg.name === packageDirname); + const pkgDir = path.join(packagesRoot, packageDirname); + + const tsconfigPath = path.join(pkgDir, 'tsconfig.json'); + + let tsConfigOverride = {}; + const tsConfigOverridePath = path.join(pkgDir, 'tsconfig.override.json'); + + if (fs.existsSync(tsConfigOverridePath)) { + tsConfigOverride = JSON.parse(fs.readFileSync(tsConfigOverridePath)); + } + const overwriteMerge = (destinationArray, sourceArray) => sourceArray; + + const internalDependencies = resolveInternalDependencies(internalDependencyMap.get(packageName)); + const tsconfigData = merge( + { + extends: `../../tsconfig.${pkg.environment === 'browser' ? 'browser' : 'node'}-base.json`, + compilerOptions: { + module: pkg.environment === 'browser' ? 'ESNext' : 'commonjs', + outDir: './types', + rootDir: '.', + composite: true, + allowJs: true, + checkJs: pkg.type === 'js' ? true : undefined, + emitDeclarationOnly: pkg.type === 'js' ? true : undefined, + }, + references: internalDependencies.map(dep => { + return { path: `../${packageDirnameMap.get(dep)}/tsconfig.json` }; + }), + include: ['src', '*.js'], + exclude: ['dist', 'types'], + }, + tsConfigOverride, + { arrayMerge: overwriteMerge }, + ); + fs.writeFileSync(tsconfigPath, TSCONFIG_COMMENT + JSON.stringify(tsconfigData, null, ' ')); +}); + +const projectLevelTsconfigPath = path.join(__dirname, '..', 'tsconfig.json'); + +const projectLevelTsconfigData = { + extends: './tsconfig.node-base.json', + files: [], + references: resolveInternalDependencies(Array.from(packageDirnameMap.keys())).map( + packageName => ({ + path: `./packages/${packageDirnameMap.get(packageName)}/tsconfig.json`, + }), + ), +}; + +fs.writeFileSync( + projectLevelTsconfigPath, + TSCONFIG_COMMENT + JSON.stringify(projectLevelTsconfigData, null, ' '), +); diff --git a/tsconfig.browser-base.json b/tsconfig.browser-base.json new file mode 100644 index 000000000..3e7b17525 --- /dev/null +++ b/tsconfig.browser-base.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "ES2018" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, + "declaration": true /* Generates corresponding '.d.ts' file. */, + "declarationMap": true /* Generates a sourcemap for each corresponding '.d.ts' file. */, + "sourceMap": true /* Generates corresponding '.map' file. */, + "downlevelIteration": true /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */, + + /* TODO: enable strict mode - but there are too many not strict types now */ + "strict": false /* Enable all strict type-checking options. */, + + "moduleResolution": "node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */, + "typeRoots": ["@types", "./types-global", "./types"], + "types": ["mocha", "chai"] /* Type declaration files to be included in compilation. */, + "allowSyntheticDefaultImports": true /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */, + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, + + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + } +} diff --git a/tsconfig.json b/tsconfig.json index e8c505a3c..cf364089e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,29 +1,26 @@ +// Don't edit this file directly. It is generated by /scripts/update-package-configs.ts + { - "compilerOptions": { - "target": "esnext", - "module": "esnext", - "moduleResolution": "node", - "lib": ["es2017", "dom"], - "allowJs": true, - "checkJs": true, - "noEmit": true, - "strict": false, - "noImplicitThis": true, - "alwaysStrict": true, - "types": ["node", "mocha"], - "esModuleInterop": true - }, - "files": ["browser.d.ts"], - "include": ["packages/**/*"], - "exclude": [ - "node_modules", - "**/node_modules/*", - "**/node_modules/**/node_modules", - "packages/**/node_modules", - "**/coverage/*", - "packages/building-utils/test/custom-polyfils/**/*", - "**/dist/**/*", - "packages/**/test-node/**/snapshots", - "packages/**/demo/**/*" + "extends": "./tsconfig.node-base.json", + "files": [], + "references": [ + { + "path": "./packages/scoped-elements/tsconfig.json" + }, + { + "path": "./packages/polyfills-loader/tsconfig.json" + }, + { + "path": "./packages/import-maps-resolve/tsconfig.json" + }, + { + "path": "./packages/semantic-dom-diff/tsconfig.json" + }, + { + "path": "./packages/testing-helpers/tsconfig.json" + }, + { + "path": "./packages/mdjs/tsconfig.json" + } ] -} +} \ No newline at end of file diff --git a/tsconfig.node-base.json b/tsconfig.node-base.json new file mode 100644 index 000000000..74c0e551d --- /dev/null +++ b/tsconfig.node-base.json @@ -0,0 +1,31 @@ +{ + "compilerOptions": { + "target": "ES2017" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, + "declaration": true /* Generates corresponding '.d.ts' file. */, + "declarationMap": true /* Generates a sourcemap for each corresponding '.d.ts' file. */, + "sourceMap": true /* Generates corresponding '.map' file. */, + "downlevelIteration": true /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */, + + /* TODO: enable strict mode - but there are too many not strict types now */ + "strict": false /* Enable all strict type-checking options. */, + + /* Module Resolution Options */ + "moduleResolution": "node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */, + "typeRoots": ["@types", "./types-global/", "./types"], + "types": ["node", "mocha", "chai"] /* Type declaration files to be included in compilation. */, + "allowSyntheticDefaultImports": true /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */, + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, + "skipLibCheck": true, + + "forceConsistentCasingInFileNames": true, /* Disallow inconsistently-cased references to the same file. */ + "lib": [ + "DOM", + "DOM.Iterable", + "ES6", + "ES2017", + // Allows array.flatMap. import `array-flat-polyfill` to cover node10 + "ES2019.array", + "ScriptHost" + ] + } +} diff --git a/workspace-packages.mjs b/workspace-packages.mjs new file mode 100644 index 000000000..987b0356c --- /dev/null +++ b/workspace-packages.mjs @@ -0,0 +1,10 @@ +const packages = [ + { name: 'polyfills-loader', type: 'js', environment: 'node' }, + { name: 'import-maps-resolve', type: 'js', environment: 'node' }, + { name: 'scoped-elements', type: 'js', environment: 'browser' }, + { name: 'semantic-dom-diff', type: 'js', environment: 'browser' }, + { name: 'testing-helpers', type: 'js', environment: 'browser' }, + { name: 'mdjs', type: 'js', environment: 'node' }, +]; + +export { packages }; diff --git a/yarn.lock b/yarn.lock index dc8bd4490..586b52829 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1978,7 +1978,7 @@ is-module "^1.0.0" resolve "^1.14.2" -"@rollup/plugin-node-resolve@^8.1.0": +"@rollup/plugin-node-resolve@^8.1.0", "@rollup/plugin-node-resolve@^8.4.0": version "8.4.0" resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-8.4.0.tgz#261d79a680e9dc3d86761c14462f24126ba83575" integrity sha512-LFqKdRLn0ShtQyf6SBYO69bGE1upV6wUhBX0vFOUnLAyzx5cwp8svA0eHUnu8+YU57XOkrMtfG63QOpQx25pHQ== @@ -3406,6 +3406,23 @@ dependencies: semver "^7.3.2" +"@web/dev-server-cli@^0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@web/dev-server-cli/-/dev-server-cli-0.0.3.tgz#65d36b92e1cf0be71098756b17957741691afab3" + integrity sha512-mcyWkU1R7eb6kswRQOIGNfvEH8mnkORQDGYAIR290A7FagRrto8ibZVFUe+leG4d7OIw0FGCbU4IlRrGKJgSxw== + dependencies: + "@babel/code-frame" "^7.10.4" + "@types/command-line-args" "^5.0.0" + "@web/config-loader" "^0.1.1" + "@web/dev-server-core" "^0.2.5" + camelcase "^6.0.0" + chalk "^4.1.0" + command-line-args "^5.1.1" + command-line-usage "^6.1.0" + ip "^1.1.5" + open "^7.1.0" + portfinder "^1.0.27" + "@web/dev-server-core@^0.2.11", "@web/dev-server-core@^0.2.2", "@web/dev-server-core@^0.2.6": version "0.2.12" resolved "https://registry.yarnpkg.com/@web/dev-server-core/-/dev-server-core-0.2.12.tgz#3e4c36755869fd3d61220ecf7f3127580fd20311" @@ -3427,6 +3444,27 @@ picomatch "^2.2.2" ws "^7.3.1" +"@web/dev-server-core@^0.2.13", "@web/dev-server-core@^0.2.5": + version "0.2.13" + resolved "https://registry.yarnpkg.com/@web/dev-server-core/-/dev-server-core-0.2.13.tgz#53b678022535caddc8b4a8a77c00864eecc4e6d4" + integrity sha512-A5j5Pf2l593HltlitpaDDxf7jXEIn9+t2lPT27VRGEgb/JIzk25oOJ/P5vQKGbrDF9qHRfu0WR9LRZnFR9r2SA== + dependencies: + "@types/ws" "^7.2.6" + chokidar "^3.4.0" + clone "^2.1.2" + es-module-lexer "^0.3.24" + get-stream "^6.0.0" + is-stream "^2.0.0" + isbinaryfile "^4.0.6" + koa "^2.13.0" + koa-etag "^3.0.0" + koa-static "^5.0.0" + lru-cache "^5.1.1" + mime-types "^2.1.27" + parse5 "^6.0.0" + picomatch "^2.2.2" + ws "^7.3.1" + "@web/dev-server-esbuild@^0.2.4": version "0.2.4" resolved "https://registry.yarnpkg.com/@web/dev-server-esbuild/-/dev-server-esbuild-0.2.4.tgz#6af53fd7f30d288e73287e4c98153fac894bfa0d" @@ -3438,7 +3476,7 @@ parse5 "^6.0.1" ua-parser-js "^0.7.21" -"@web/dev-server-rollup@^0.2.9": +"@web/dev-server-rollup@^0.2.5", "@web/dev-server-rollup@^0.2.9": version "0.2.9" resolved "https://registry.yarnpkg.com/@web/dev-server-rollup/-/dev-server-rollup-0.2.9.tgz#e76925846d966053a80ec6d726c189d2c2b7cd2d" integrity sha512-YSlXV0igmhgXEy0tCdF0QzKKyDN6Bp5bj4TYmJpXLGWkUHyKwcohHNq/kAG1mxaxdkEX5cO9FUg/MfGZqeOA0w== @@ -3449,6 +3487,28 @@ rollup "^2.20.0" whatwg-url "^8.1.0" +"@web/dev-server@^0.0.15": + version "0.0.15" + resolved "https://registry.yarnpkg.com/@web/dev-server/-/dev-server-0.0.15.tgz#2a27bac3f72681bff332bb46357c2a3f8a39a096" + integrity sha512-58YY9aHfc2f6CZbjI5NDG+jCGIyb3Da74vbaLSklmFuawJZrQ5ntjnFiMvP0L4Z5IW6WV+W+FPyOS58GTda3Zw== + dependencies: + "@babel/code-frame" "^7.10.4" + "@rollup/plugin-node-resolve" "^8.4.0" + "@types/command-line-args" "^5.0.0" + "@web/config-loader" "^0.1.1" + "@web/dev-server-cli" "^0.0.3" + "@web/dev-server-core" "^0.2.13" + "@web/dev-server-rollup" "^0.2.5" + camelcase "^6.0.0" + chalk "^4.1.0" + command-line-args "^5.1.1" + command-line-usage "^6.1.0" + debounce "^1.2.0" + deepmerge "^4.2.2" + ip "^1.1.5" + open "^7.1.0" + portfinder "^1.0.27" + "@web/test-runner-chrome@^0.7.2": version "0.7.2" resolved "https://registry.yarnpkg.com/@web/test-runner-chrome/-/test-runner-chrome-0.7.2.tgz#56b4241219f508d1a1b9bc7046d853dedad4c5b8" @@ -6080,6 +6140,19 @@ copy-to-clipboard@^3.0.8: dependencies: toggle-selection "^1.0.6" +copyfiles@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-2.4.0.tgz#fcac72a4f2b882f021dd156b4bcf6d71315487bd" + integrity sha512-yGjpR3yjQdxccW8EcJ4a7ZCA6wGER6/Q2Y+b7bXbVxGeSHBf93i9d7MzTsx+VV1CpMKQa3v4ThZfXBcltMzl0w== + dependencies: + glob "^7.0.5" + minimatch "^3.0.3" + mkdirp "^1.0.4" + noms "0.0.0" + through2 "^2.0.1" + untildify "^4.0.0" + yargs "^15.3.1" + core-js-bundle@^3.6.0: version "3.6.5" resolved "https://registry.yarnpkg.com/core-js-bundle/-/core-js-bundle-3.6.5.tgz#3a425ad66ad19aeefea89acfd48cff674ff58590" @@ -8455,7 +8528,7 @@ glob@7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -11304,7 +11377,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: +minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -11411,6 +11484,11 @@ mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@^0.5.5, mkdirp@~0.5.1: dependencies: minimist "^1.2.5" +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + mocha-chai-snapshot@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/mocha-chai-snapshot/-/mocha-chai-snapshot-1.0.0.tgz#6c8747a2fa8d5b3b2d1d0600bb3e644b0fd5c913" @@ -11645,6 +11723,14 @@ node-releases@^1.1.29, node-releases@^1.1.53: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.55.tgz#8af23b7c561d8e2e6e36a46637bab84633b07cee" integrity sha512-H3R3YR/8TjT5WPin/wOoHOUPHgvj8leuU/Keta/rwelEQN9pA/S2Dx8/se4pZ2LBxSd0nAGzsNzhqwa77v7F1w== +noms@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/noms/-/noms-0.0.0.tgz#da8ebd9f3af9d6760919b27d9cdc8092a7332859" + integrity sha1-2o69nzr51nYJGbJ9nNyAkqczKFk= + dependencies: + inherits "^2.0.1" + readable-stream "~1.0.31" + nopt@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" @@ -11921,7 +12007,7 @@ open@^7.0.0, open@^7.0.3: is-docker "^2.0.0" is-wsl "^2.1.1" -open@^7.0.4: +open@^7.0.4, open@^7.1.0: version "7.3.0" resolved "https://registry.yarnpkg.com/open/-/open-7.3.0.tgz#45461fdee46444f3645b6e14eb3ca94b82e1be69" integrity sha512-mgLwQIx2F/ye9SmbrUkurZCnkoXyXyu9EbHtJZrICjVAJfyMArdHp3KkixGdZx1ZHFPNIwl0DDM1dFFqXbTLZw== @@ -12605,7 +12691,7 @@ portfinder@^1.0.13, portfinder@^1.0.21: debug "^3.1.1" mkdirp "^0.5.1" -portfinder@^1.0.26: +portfinder@^1.0.26, portfinder@^1.0.27: version "1.0.28" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== @@ -13559,6 +13645,16 @@ readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@~1.0.31: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -15247,6 +15343,11 @@ string_decoder@^1.0.0, string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -15654,7 +15755,7 @@ throttle-debounce@^2.1.0: resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-2.1.0.tgz#257e648f0a56bd9e54fe0f132c4ab8611df4e1d5" integrity sha512-AOvyNahXQuU7NN+VVvOOX+uW6FPaWdAOdRP5HfwYxAfCzXTFKRMoIMk+n+po318+ktcChx+F1Dd91G3YHeMKyg== -through2@^2.0.0: +through2@^2.0.0, through2@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -16260,6 +16361,11 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + upath@^1.1.1, upath@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" @@ -16603,13 +16709,6 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" -webpack-merge@^4.1.5: - version "4.2.2" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" - integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== - dependencies: - lodash "^4.17.15" - 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"