diff --git a/sdk/core/abort-controller/package.json b/sdk/core/abort-controller/package.json index e33f4997031a..d837c55d9c7f 100644 --- a/sdk/core/abort-controller/package.json +++ b/sdk/core/abort-controller/package.json @@ -7,19 +7,16 @@ "module": "dist-esm/src/index.js", "scripts": { "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", + "build:samples": "echo Obsolete", + "build:test": "tsc -p . && rollup -c 2>&1", "build:types": "downlevel-dts types/src types/3.1", - "build:node": "tsc -p . && cross-env ONLY_NODE=true rollup -c 2>&1 && npm run extract-api", - "build:browser": "tsc -p . && cross-env ONLY_BROWSER=true rollup -c 2>&1", - "build:nodebrowser": "rollup -c 2>&1", - "build:test": "tsc -p . && rollup -c rollup.test.config.js 2>&1", - "build:test:node": "tsc -p . && cross-env ONLY_NODE=true rollup -c rollup.test.config.js 2>&1", - "build:test:browser": "tsc -p . && cross-env ONLY_BROWSER=true rollup -c rollup.test.config.js 2>&1", - "build": "tsc -p . && npm run build:nodebrowser && npm run build:types", + "build": "tsc -p . && rollup -c 2>&1 && npm run build:types", "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", - "clean": "rimraf dist dist-* types temp statistics.html coverage coverage-browser .nyc_output *.tgz *.log test*.xml TEST*.xml", + "clean": "rimraf dist dist-* temp types *.tgz *.log", + "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src", "execute:samples": "echo skipped", "extract-api": "tsc -p . && api-extractor run --local", - "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", "integration-test:node": "echo skipped", "integration-test": "npm run integration-test:node && npm run integration-test:browser", @@ -27,15 +24,12 @@ "lint": "eslint package.json api-extractor.json src test --ext .ts", "pack": "npm pack 2>&1", "prebuild": "npm run clean", - "pretest": "npm run build:test", - "test:browser": "npm run build:test && npm run unit-test:browser && npm run integration-test:browser", - "test:node": "npm run build:test && npm run unit-test:node && npm run integration-test:node", - "test": "npm run build:test && npm run unit-test && npm run integration-test", + "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser", + "test:node": "npm run clean && tsc -p . && npm run unit-test:node && npm run integration-test:node", + "test": "npm run clean && tsc -p . && npm run unit-test:node && rollup -c 2>&1 && npm run unit-test:browser && npm run integration-test", "unit-test:browser": "karma start --single-run", - "unit-test:node": "cross-env TS_NODE_FILES=true TS_NODE_COMPILER_OPTIONS=\"{\\\"module\\\": \\\"commonjs\\\"}\" mocha --require ts-node/register --require source-map-support/register --reporter ../../../common/tools/mocha-multi-reporter.js --full-trace --no-timeouts \"test/*.spec.ts\"", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "build:samples": "echo Skipped.", - "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src" + "unit-test:node": "mocha -r esm -r ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace --exclude \"test/**/browser/*.spec.ts\" \"test/**/*.spec.ts\"", + "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "types": "./types/src/index.d.ts", "typesVersions": { @@ -80,15 +74,13 @@ "tslib": "^2.2.0" }, "devDependencies": { + "@azure/dev-tool": "^1.0.0", "@azure/eslint-plugin-azure-sdk": "^3.0.0", "@microsoft/api-extractor": "7.7.11", - "@rollup/plugin-commonjs": "11.0.2", - "@rollup/plugin-multi-entry": "^3.0.0", - "@rollup/plugin-node-resolve": "^8.0.0", - "@rollup/plugin-replace": "^2.2.0", + "@types/chai": "^4.1.6", "@types/mocha": "^7.0.2", "@types/node": "^12.0.0", - "assert": "^1.4.1", + "chai": "^4.2.0", "cross-env": "^7.0.2", "delay": "^4.2.0", "downlevel-dts": "~0.4.0", @@ -110,8 +102,6 @@ "prettier": "^1.16.4", "rimraf": "^3.0.0", "rollup": "^1.16.3", - "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-terser": "^5.1.1", "ts-node": "^9.0.0", "typescript": "~4.2.0", "typedoc": "0.15.2" diff --git a/sdk/core/abort-controller/rollup.base.config.js b/sdk/core/abort-controller/rollup.base.config.js deleted file mode 100644 index 4eb630539d97..000000000000 --- a/sdk/core/abort-controller/rollup.base.config.js +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -import nodeResolve from "@rollup/plugin-node-resolve"; -import multiEntry from "@rollup/plugin-multi-entry"; -import cjs from "@rollup/plugin-commonjs"; -import replace from "@rollup/plugin-replace"; -import { terser } from "rollup-plugin-terser"; -import sourcemaps from "rollup-plugin-sourcemaps"; - -const pkg = require("./package.json"); -const depNames = Object.keys(pkg.dependencies); -const input = "./dist-esm/src/index.js"; -const production = process.env.NODE_ENV === "production"; - -export function nodeConfig(test = false) { - const externalNodeBuiltins = []; - const baseConfig = { - input: input, - external: depNames.concat(externalNodeBuiltins), - output: { file: "dist/index.js", format: "cjs", sourcemap: true }, - preserveSymlinks: false, - plugins: [ - sourcemaps(), - replace({ - delimiters: ["", ""], - // replace dynamic checks with if (true) since this is for node only. - // Allows rollup's dead code elimination to be more aggressive. - "if (isNode)": "if (true)" - }), - nodeResolve({ preferBuiltins: true, mainFields: ["module"] }), - cjs() - ] - }; - - if (test) { - // entry point is every test file - baseConfig.input = "dist-esm/test/**/*.spec.js"; - baseConfig.plugins.unshift(multiEntry({ exports: false })); - - // different output file - baseConfig.output.file = "dist-test/aborter.js"; - - // mark assert as external - baseConfig.external.push("assert"); - - baseConfig.context = "null"; - - baseConfig.onwarn = (warning) => { - console.error(`(!) ${warning.message}`); - }; - - // Disable tree-shaking of test code. In rollup-plugin-node-resolve@5.0.0, rollup started respecting - // the "sideEffects" field in package.json. Since our package.json sets "sideEffects=false", this also - // applies to test code, which causes all tests to be removed by tree-shaking. - baseConfig.treeshake = false; - } else if (production) { - baseConfig.plugins.push(terser()); - } - - return baseConfig; -} - -export function browserConfig(test = false) { - const baseConfig = { - input: input, - external: ["ms-rest-js"], - output: { - file: "dist-browser/index.js", - format: "umd", - name: "Aborter", - sourcemap: true, - globals: { "ms-rest-js": "msRest" } - }, - preserveSymlinks: false, - plugins: [ - sourcemaps(), - replace( - // ms-rest-js is externalized so users must include it prior to using this bundle. - { - delimiters: ["", ""], - // replace dynamic checks with if (false) since this is for - // browser only. Rollup's dead code elimination will remove - // any code guarded by if (isNode) { ... } - "if (isNode)": "if (false)" - } - ), - nodeResolve({ - mainFields: ["module", "browser"], - preferBuiltins: false - }), - cjs({ - namedExports: { - events: ["EventEmitter"], - assert: ["ok", "deepEqual", "equal", "fail", "deepStrictEqual", "notDeepEqual"] - } - }) - ] - }; - console.log("browser build"); - - if (test) { - console.log("yes test"); - baseConfig.input = "dist-esm/test/**/*.spec.js"; - baseConfig.plugins.unshift(multiEntry({ exports: false })); - baseConfig.output.file = "dist-test/index.browser.js"; - baseConfig.context = "null"; - - // Disable tree-shaking of test code. In rollup-plugin-node-resolve@5.0.0, rollup started respecting - // the "sideEffects" field in package.json. Since our package.json sets "sideEffects=false", this also - // applies to test code, which causes all tests to be removed by tree-shaking. - baseConfig.treeshake = false; - } else if (production) { - baseConfig.plugins.push(terser()); - } - - return baseConfig; -} diff --git a/sdk/core/abort-controller/rollup.config.js b/sdk/core/abort-controller/rollup.config.js index fd25a0257a1f..5d7deee44c14 100644 --- a/sdk/core/abort-controller/rollup.config.js +++ b/sdk/core/abort-controller/rollup.config.js @@ -1,17 +1,3 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. +import { makeConfig } from "@azure/dev-tool/shared-config/rollup"; -import * as base from "./rollup.base.config"; - -const inputs = []; - -if (!process.env.ONLY_BROWSER) { - inputs.push(base.nodeConfig()); -} - -// Disable this until we are ready to run rollup for the browser. -if (!process.env.ONLY_NODE) { - inputs.push(base.browserConfig()); -} - -export default inputs; +export default makeConfig(require("./package.json")); diff --git a/sdk/core/abort-controller/rollup.test.config.js b/sdk/core/abort-controller/rollup.test.config.js deleted file mode 100644 index ad98718cce46..000000000000 --- a/sdk/core/abort-controller/rollup.test.config.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -import * as base from "./rollup.base.config"; - -export default [base.nodeConfig(true), base.browserConfig(true)]; diff --git a/sdk/core/abort-controller/test/aborter.spec.ts b/sdk/core/abort-controller/test/aborter.spec.ts index 189febaaec95..5bcf5e4777ea 100644 --- a/sdk/core/abort-controller/test/aborter.spec.ts +++ b/sdk/core/abort-controller/test/aborter.spec.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import * as assert from "assert"; +import { assert } from "chai"; import { AbortController, AbortSignal, AbortError } from "../src"; describe("AbortController", () => { @@ -41,7 +41,7 @@ describe("AbortController", () => { console.log("got result", rs); assert.fail(); } catch (err) { - assert.equal(err.name, "AbortError"); + assert.strictEqual(err.name, "AbortError"); } }); @@ -55,7 +55,7 @@ describe("AbortController", () => { console.log("got, r", r); assert.fail(); } catch (err) { - assert.equal(err.name, "AbortError"); + assert.strictEqual(err.name, "AbortError"); } }); @@ -79,7 +79,7 @@ describe("AbortController", () => { await response; assert.fail(); } catch (err) { - assert.equal(s, "aborted"); + assert.strictEqual(s, "aborted"); } }); @@ -157,8 +157,8 @@ describe("AbortController", () => { parentController.abort(); const childController = new AbortController(parentSignal); - assert.equal(true, childController.signal.aborted); - assert.equal(s, "parent"); + assert.strictEqual(true, childController.signal.aborted); + assert.strictEqual(s, "parent"); }); it("should propagate 'true' aborted state from any parent to child signals", async () => { @@ -179,11 +179,11 @@ describe("AbortController", () => { parent1.abort(); const childController = new AbortController(parent1.signal, parent2.signal, parent3.signal); - assert.equal(true, childController.signal.aborted); - assert.equal(true, parent1.signal.aborted); - assert.equal(false, parent2.signal.aborted); - assert.equal(false, parent3.signal.aborted); - assert.equal(s, "parent1"); + assert.strictEqual(true, childController.signal.aborted); + assert.strictEqual(true, parent1.signal.aborted); + assert.strictEqual(false, parent2.signal.aborted); + assert.strictEqual(false, parent3.signal.aborted); + assert.strictEqual(s, "parent1"); }); it("should propagate 'true' aborted state from any parent to child signals (arrays)", async () => { @@ -204,11 +204,11 @@ describe("AbortController", () => { parent1.abort(); const childController = new AbortController([parent1.signal, parent2.signal, parent3.signal]); - assert.equal(true, childController.signal.aborted); - assert.equal(true, parent1.signal.aborted); - assert.equal(false, parent2.signal.aborted); - assert.equal(false, parent3.signal.aborted); - assert.equal(s, "parent1"); + assert.strictEqual(true, childController.signal.aborted); + assert.strictEqual(true, parent1.signal.aborted); + assert.strictEqual(false, parent2.signal.aborted); + assert.strictEqual(false, parent3.signal.aborted); + assert.strictEqual(s, "parent1"); }); it("should call abort() on child signals that were created before parent abort() call", async function() { @@ -232,14 +232,14 @@ describe("AbortController", () => { // trigger abort() on parentSignal, event listeners should trigger on children parentController.abort(); - assert.equal(3, values.length); - assert.equal(true, parentSignal.aborted); - assert.equal(true, child1.signal.aborted); - assert.equal(true, child2.signal.aborted); - - assert.equal(true, values.includes("parent")); - assert.equal(true, values.includes("child1")); - assert.equal(true, values.includes("child2")); + assert.strictEqual(3, values.length); + assert.strictEqual(true, parentSignal.aborted); + assert.strictEqual(true, child1.signal.aborted); + assert.strictEqual(true, child2.signal.aborted); + + assert.strictEqual(true, values.includes("parent")); + assert.strictEqual(true, values.includes("child1")); + assert.strictEqual(true, values.includes("child2")); }); it("should call abort() on child signal that was created before any parent's abort() call", async () => { @@ -266,13 +266,13 @@ describe("AbortController", () => { // trigger abort() on a parent, event listeners should trigger on child parent2.abort(); - assert.equal(true, child.signal.aborted); - assert.equal(false, parent1.signal.aborted); - assert.equal(true, parent2.signal.aborted); - assert.equal(false, parent3.signal.aborted); - assert.equal(2, values.length); - assert.equal(true, values.includes("parent2")); - assert.equal(true, values.includes("child")); + assert.strictEqual(true, child.signal.aborted); + assert.strictEqual(false, parent1.signal.aborted); + assert.strictEqual(true, parent2.signal.aborted); + assert.strictEqual(false, parent3.signal.aborted); + assert.strictEqual(2, values.length); + assert.strictEqual(true, values.includes("parent2")); + assert.strictEqual(true, values.includes("child")); }); it("should call abort() on child signal that was created before any parent's abort() call (arrays)", async () => { @@ -299,13 +299,13 @@ describe("AbortController", () => { // trigger abort() on a parent, event listeners should trigger on child parent2.abort(); - assert.equal(true, child.signal.aborted); - assert.equal(false, parent1.signal.aborted); - assert.equal(true, parent2.signal.aborted); - assert.equal(false, parent3.signal.aborted); - assert.equal(2, values.length); - assert.equal(true, values.includes("parent2")); - assert.equal(true, values.includes("child")); + assert.strictEqual(true, child.signal.aborted); + assert.strictEqual(false, parent1.signal.aborted); + assert.strictEqual(true, parent2.signal.aborted); + assert.strictEqual(false, parent3.signal.aborted); + assert.strictEqual(2, values.length); + assert.strictEqual(true, values.includes("parent2")); + assert.strictEqual(true, values.includes("child")); }); it("should call abort() on deeply nested child signals that were created before parent abort() call", async function() { @@ -329,14 +329,14 @@ describe("AbortController", () => { // trigger abort() on parentSignal, event listeners should trigger on children parentController.abort(); - assert.equal(3, values.length); - assert.equal(true, parentSignal.aborted); - assert.equal(true, child1.signal.aborted); - assert.equal(true, child2.signal.aborted); - - assert.equal(true, values.includes("parent")); - assert.equal(true, values.includes("child1")); - assert.equal(true, values.includes("child2")); + assert.strictEqual(3, values.length); + assert.strictEqual(true, parentSignal.aborted); + assert.strictEqual(true, child1.signal.aborted); + assert.strictEqual(true, child2.signal.aborted); + + assert.strictEqual(true, values.includes("parent")); + assert.strictEqual(true, values.includes("child1")); + assert.strictEqual(true, values.includes("child2")); }); it("should not call abort() on parent signals when child calls abort()", async function() { @@ -360,23 +360,23 @@ describe("AbortController", () => { // trigger abort() on child, event listeners should not trigger on parent child1.abort(); - assert.equal(2, values.length); - assert.equal(false, parentSignal.aborted); - assert.equal(true, child1.signal.aborted); - assert.equal(true, child2.signal.aborted); + assert.strictEqual(2, values.length); + assert.strictEqual(false, parentSignal.aborted); + assert.strictEqual(true, child1.signal.aborted); + assert.strictEqual(true, child2.signal.aborted); - assert.equal(true, values.includes("child1")); - assert.equal(true, values.includes("child2")); + assert.strictEqual(true, values.includes("child1")); + assert.strictEqual(true, values.includes("child2")); // trigger abort() on parent, children should not invoke listeners again parentController.abort(); - assert.equal(3, values.length); - assert.equal(true, parentSignal.aborted); - assert.equal(true, child1.signal.aborted); - assert.equal(true, child2.signal.aborted); - - assert.equal(true, values.includes("parent")); - assert.equal(true, values.includes("child1")); - assert.equal(true, values.includes("child2")); + assert.strictEqual(3, values.length); + assert.strictEqual(true, parentSignal.aborted); + assert.strictEqual(true, child1.signal.aborted); + assert.strictEqual(true, child2.signal.aborted); + + assert.strictEqual(true, values.includes("parent")); + assert.strictEqual(true, values.includes("child1")); + assert.strictEqual(true, values.includes("child2")); }); }); diff --git a/sdk/core/core-amqp/package.json b/sdk/core/core-amqp/package.json index 3d0424cf39a0..e1960e9e16c8 100644 --- a/sdk/core/core-amqp/package.json +++ b/sdk/core/core-amqp/package.json @@ -35,15 +35,16 @@ ], "scripts": { "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", - "build:samples": "echo skipped", + "build:samples": "echo Obsolete", "build:test": "tsc -p . && rollup -c rollup.test.config.js 2>&1", - "build:types": "downlevel-dts types/latest types/3.1", + "build:types": "downlevel-dts types/latest/ types/3.1/", "build": "tsc -p . && rollup -c 2>&1 && api-extractor run --local && npm run build:types", "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", - "clean": "rimraf dist dist-* types temp statistics.html coverage coverage-browser .nyc_output *.tgz *.log test*.xml TEST*.xml", + "clean": "rimraf dist dist-* temp types coverage coverage-browser .nyc_output *.tgz *.log test*.xml", + "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src", "execute:samples": "echo skipped", "extract-api": "tsc -p . && api-extractor run --local", - "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", "integration-test:node": "echo skipped", "integration-test": "npm run integration-test:node && npm run integration-test:browser", @@ -51,13 +52,12 @@ "lint": "eslint package.json api-extractor.json src test --ext .ts", "pack": "npm pack 2>&1", "prebuild": "npm run clean", - "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser", - "test:node": "npm run clean && npm run build:test && npm run unit-test:node", - "test": "npm run test:node && npm run test:browser", + "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser", + "test:node": "npm run clean && tsc -p . && npm run unit-test:node && npm run integration-test:node", + "test": "npm run clean && tsc -p . && npm run unit-test:node && rollup -c rollup.test.config.js 2>&1 && npm run unit-test:browser && npm run integration-test", "unit-test:browser": "karma start --single-run", - "unit-test:node": "cross-env TS_NODE_FILES=true TS_NODE_COMPILER_OPTIONS=\"{\\\"module\\\":\\\"commonjs\\\"}\" nyc --reporter=lcov --reporter=text-lcov mocha -r ts-node/register -t 50000 --reporter ../../../common/tools/mocha-multi-reporter.js \"./test/*.spec.ts\" \"./test/node/*.spec.ts\"", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src" + "unit-test:node": "cross-env TS_NODE_FILES=true TS_NODE_COMPILER_OPTIONS=\"{\\\"module\\\":\\\"commonjs\\\"}\" nyc --reporter=lcov --reporter=text-lcov mocha -r ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 50000 --full-trace --exclude \"test/**/browser/*.spec.ts\" \"test/**/*.spec.ts\"", + "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "engines": { "node": ">=12.0.0" @@ -92,15 +92,12 @@ "@rollup/plugin-node-resolve": "^8.0.0", "@rollup/plugin-replace": "^2.2.0", "@types/chai": "^4.1.6", - "@types/chai-as-promised": "^7.1.0", "@types/debug": "^4.1.4", "@types/mocha": "^7.0.2", "@types/node": "^12.0.0", "@types/sinon": "^9.0.4", "@types/ws": "^7.2.4", - "assert": "^1.4.1", "chai": "^4.2.0", - "chai-as-promised": "^7.1.1", "cross-env": "^7.0.2", "debug": "^4.1.1", "dotenv": "^8.2.0", diff --git a/sdk/core/core-asynciterator-polyfill/package.json b/sdk/core/core-asynciterator-polyfill/package.json index 4846f579fdb1..f125143d4f25 100644 --- a/sdk/core/core-asynciterator-polyfill/package.json +++ b/sdk/core/core-asynciterator-polyfill/package.json @@ -32,10 +32,12 @@ }, "scripts": { "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", - "build": "tsc -p .", + "build:samples": "echo Obsolete", "build:test": "echo skipped", + "build": "tsc -p .", "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"*.{js,json}\"", "clean": "echo skipped", + "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src", "execute:samples": "echo skipped", "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", @@ -45,14 +47,12 @@ "lint:fix": "eslint package.json src --ext .ts --fix --fix-type [problem,suggestion]", "pack": "npm pack 2>&1", "prebuild": "npm run clean", - "test:browser": "npm run build:test && npm run unit-test:browser && npm run integration-test:browser", - "test:node": "npm run build:test && npm run unit-test:node && npm run integration-test:node", - "test": "npm run build:test && npm run unit-test && npm run integration-test", + "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser", + "test:node": "npm run build && npm run unit-test:node && npm run integration-test:node", + "test": "npm run build && npm run unit-test:node && rollup -c 2>&1 && npm run unit-test:browser && npm run integration-test", "unit-test:browser": "echo skipped", "unit-test:node": "echo skipped", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "build:samples": "echo Skipped.", - "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src" + "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "sideEffects": true, "private": false, diff --git a/sdk/core/core-auth/package.json b/sdk/core/core-auth/package.json index ce409350dc43..46477413e954 100644 --- a/sdk/core/core-auth/package.json +++ b/sdk/core/core-auth/package.json @@ -15,17 +15,16 @@ }, "scripts": { "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", - "build:browser": "tsc -p . && cross-env ONLY_BROWSER=true rollup -c 2>&1", - "build:node": "tsc -p . && cross-env ONLY_NODE=true rollup -c 2>&1", - "build:samples": "echo Skipped.", - "build:test": "tsc -p . && rollup -c rollup.test.config.js 2>&1", - "build:types": "downlevel-dts types/latest types/3.1", + "build:samples": "echo Obsolete", + "build:test": "tsc -p . && rollup -c 2>&1", + "build:types": "downlevel-dts types/latest/ types/3.1/", "build": "tsc -p . && rollup -c 2>&1 && api-extractor run --local && npm run build:types", "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", - "clean": "rimraf dist dist-* types *.tgz *.log", + "clean": "rimraf dist dist-* temp types *.tgz *.log", + "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src", "execute:samples": "echo skipped", "extract-api": "tsc -p . && api-extractor run --local", - "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", "integration-test:node": "echo skipped", "integration-test": "npm run integration-test:node && npm run integration-test:browser", @@ -33,13 +32,12 @@ "lint": "eslint package.json api-extractor.json src test --ext .ts", "pack": "npm pack 2>&1", "prebuild": "npm run clean", - "test:browser": "npm run build:test && npm run unit-test:browser && npm run integration-test:browser", - "test:node": "npm run build:test && npm run unit-test:node && npm run integration-test:node", - "test": "npm run build:test && npm run unit-test && npm run integration-test", + "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser", + "test:node": "npm run clean && tsc -p . && npm run unit-test:node && npm run integration-test:node", + "test": "npm run clean && tsc -p . && npm run unit-test:node && rollup -c 2>&1 && npm run unit-test:browser && npm run integration-test", "unit-test:browser": "echo skipped", - "unit-test:node": "mocha dist-test/**/*.js --reporter ../../../common/tools/mocha-multi-reporter.js", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src" + "unit-test:node": "mocha -r esm -r ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace --exclude \"test/**/browser/*.spec.ts\" \"test/**/*.spec.ts\"", + "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "files": [ "dist/", @@ -70,16 +68,13 @@ "tslib": "^2.2.0" }, "devDependencies": { + "@azure/dev-tool": "^1.0.0", "@azure/eslint-plugin-azure-sdk": "^3.0.0", "@microsoft/api-extractor": "7.7.11", - "@rollup/plugin-commonjs": "11.0.2", - "@rollup/plugin-json": "^4.0.0", - "@rollup/plugin-multi-entry": "^3.0.0", - "@rollup/plugin-node-resolve": "^8.0.0", - "@rollup/plugin-replace": "^2.2.0", + "@types/chai": "^4.1.6", "@types/mocha": "^7.0.2", "@types/node": "^12.0.0", - "assert": "^1.4.1", + "chai": "^4.2.0", "cross-env": "^7.0.2", "downlevel-dts": "~0.4.0", "eslint": "^7.15.0", @@ -89,9 +84,6 @@ "prettier": "^1.16.4", "rimraf": "^3.0.0", "rollup": "^1.16.3", - "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-terser": "^5.1.1", - "rollup-plugin-visualizer": "^4.0.4", "typescript": "~4.2.0", "util": "^0.12.1", "typedoc": "0.15.2" diff --git a/sdk/core/core-auth/rollup.base.config.js b/sdk/core/core-auth/rollup.base.config.js deleted file mode 100644 index 5ee209c0bfbc..000000000000 --- a/sdk/core/core-auth/rollup.base.config.js +++ /dev/null @@ -1,98 +0,0 @@ -import nodeResolve from "@rollup/plugin-node-resolve"; -import multiEntry from "@rollup/plugin-multi-entry"; -import cjs from "@rollup/plugin-commonjs"; -import replace from "@rollup/plugin-replace"; -import { terser } from "rollup-plugin-terser"; -import sourcemaps from "rollup-plugin-sourcemaps"; -import viz from "rollup-plugin-visualizer"; - -const pkg = require("./package.json"); -const depNames = Object.keys(pkg.dependencies); -const input = "dist-esm/src/index.js"; -const production = process.env.NODE_ENV === "production"; - -export function nodeConfig(test = false) { - const externalNodeBuiltins = ["events"]; - const baseConfig = { - input: input, - external: depNames.concat(externalNodeBuiltins), - output: { file: "dist/index.js", format: "cjs", sourcemap: true }, - preserveSymlinks: false, - plugins: [ - sourcemaps(), - replace({ - delimiters: ["", ""], - // replace dynamic checks with if (true) since this is for node only. - // Allows rollup's dead code elimination to be more aggressive. - "if (isNode)": "if (true)" - }), - nodeResolve({ preferBuiltins: true }), - cjs() - ] - }; - - if (test) { - // entry point is every test file - baseConfig.input = "dist-esm/test/**/*.spec.js"; - baseConfig.plugins.unshift(multiEntry({ exports: false })); - - // different output file - baseConfig.output.file = "dist-test/index.js"; - - // mark assert as external - baseConfig.external.push("assert"); - - // Disable tree-shaking of test code. In rollup-plugin-node-resolve@5.0.0, rollup started respecting - // the "sideEffects" field in package.json. Since our package.json sets "sideEffects=false", this also - // applies to test code, which causes all tests to be removed by tree-shaking. - baseConfig.treeshake = false; - } else if (production) { - baseConfig.plugins.push(terser()); - } - - return baseConfig; -} - -export function browserConfig(test = false) { - const baseConfig = { - input: input, - output: { - file: "dist-browser/core-auth.js", - format: "umd", - name: "Azure.Core.Auth", - sourcemap: true - }, - preserveSymlinks: false, - plugins: [ - sourcemaps(), - replace({ - delimiters: ["", ""], - // replace dynamic checks with if (false) since this is for - // browser only. Rollup's dead code elimination will remove - // any code guarded by if (isNode) { ... } - "if (isNode)": "if (false)" - }), - nodeResolve({ - mainFields: ["module", "browser"], - preferBuiltins: false - }), - cjs({ - namedExports: { events: ["EventEmitter"] } - }), - viz({ filename: "dist-browser/browser-stats.html", sourcemap: false }) - ] - }; - - if (test) { - baseConfig.input = "dist-esm/test/**/*.spec.js"; - baseConfig.plugins.unshift(multiEntry({ exports: false })); - baseConfig.output.file = "dist-test/index.browser.js"; - - // Disable tree-shaking of test code. In rollup-plugin-node-resolve@5.0.0, rollup started respecting - // the "sideEffects" field in package.json. Since our package.json sets "sideEffects=false", this also - // applies to test code, which causes all tests to be removed by tree-shaking. - baseConfig.treeshake = false; - } - - return baseConfig; -} diff --git a/sdk/core/core-auth/rollup.config.js b/sdk/core/core-auth/rollup.config.js index 14652aa67ed8..5d7deee44c14 100644 --- a/sdk/core/core-auth/rollup.config.js +++ b/sdk/core/core-auth/rollup.config.js @@ -1,13 +1,3 @@ -import * as base from "./rollup.base.config"; +import { makeConfig } from "@azure/dev-tool/shared-config/rollup"; -const inputs = []; - -if (!process.env.ONLY_BROWSER) { - inputs.push(base.nodeConfig()); -} - -if (!process.env.ONLY_NODE) { - inputs.push(base.browserConfig()); -} - -export default inputs; +export default makeConfig(require("./package.json")); diff --git a/sdk/core/core-auth/rollup.test.config.js b/sdk/core/core-auth/rollup.test.config.js deleted file mode 100644 index 925a4421a53e..000000000000 --- a/sdk/core/core-auth/rollup.test.config.js +++ /dev/null @@ -1,3 +0,0 @@ -import * as base from "./rollup.base.config"; - -export default [base.nodeConfig(true), base.browserConfig(true)]; diff --git a/sdk/core/core-auth/test/index.spec.ts b/sdk/core/core-auth/test/index.spec.ts index d83325a513d8..c232e5a31012 100644 --- a/sdk/core/core-auth/test/index.spec.ts +++ b/sdk/core/core-auth/test/index.spec.ts @@ -1,8 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import assert from "assert"; - +import { assert } from "chai"; import { AzureKeyCredential, AzureNamedKeyCredential, diff --git a/sdk/core/core-client-paging-rest/package.json b/sdk/core/core-client-paging-rest/package.json index dbb00fa1abf2..2c2f1bcea4d7 100644 --- a/sdk/core/core-client-paging-rest/package.json +++ b/sdk/core/core-client-paging-rest/package.json @@ -11,17 +11,15 @@ }, "scripts": { "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", - "build:browser": "npm run build:ts && cross-env ONLY_BROWSER=true rollup -c 2>&1", - "build:node": "npm run build:ts && cross-env ONLY_NODE=true rollup -c 2>&1", - "build:samples": "echo Skipped.", + "build:samples": "echo Obsolete", "build:test": "tsc -p . && rollup -c 2>&1", - "build:ts": "tsc -p .", - "build": "npm run build:ts && rollup -c 2>&1 && api-extractor run --local", - "check-format": "prettier --list-different \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", - "clean": "rimraf dist dist-* types *.tgz *.log", + "build": "tsc -p . && rollup -c 2>&1 && api-extractor run --local", + "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "clean": "rimraf dist dist-* temp types *.tgz *.log", + "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src", "execute:samples": "echo skipped", - "extract-api": "npm run build:ts && api-extractor run --local", - "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "extract-api": "tsc -p . && api-extractor run --local", + "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", "integration-test:node": "echo skipped", "integration-test": "npm run integration-test:node && npm run integration-test:browser", @@ -29,13 +27,12 @@ "lint": "eslint package.json api-extractor.json src test --ext .ts", "pack": "npm pack 2>&1", "prebuild": "npm run clean", - "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser", - "test:node": "npm run clean && npm run build:test && npm run unit-test:node", - "test": "npm run clean && npm run build:test && npm run unit-test", + "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser", + "test:node": "npm run clean && tsc -p . && npm run unit-test:node && npm run integration-test:node", + "test": "npm run clean && tsc -p . && npm run unit-test:node && rollup -c 2>&1 && npm run unit-test:browser && npm run integration-test", "unit-test:browser": "karma start --single-run", - "unit-test:node": "mocha -r esm --require ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace \"test/{,!(browser)/**/}*.spec.ts\"", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src" + "unit-test:node": "mocha -r esm -r ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace \"test/{,!(browser)/**/}*.spec.ts\"", + "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "files": [ "dist/", diff --git a/sdk/core/core-client-rest/package.json b/sdk/core/core-client-rest/package.json index b75c356e3335..640a3407ee04 100644 --- a/sdk/core/core-client-rest/package.json +++ b/sdk/core/core-client-rest/package.json @@ -11,17 +11,15 @@ "types": "types/latest/core-client-rest.d.ts", "scripts": { "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", - "build:browser": "npm run build:ts && cross-env ONLY_BROWSER=true rollup -c 2>&1", - "build:node": "npm run build:ts && cross-env ONLY_NODE=true rollup -c 2>&1", - "build:samples": "echo Skipped.", + "build:samples": "echo Obsolete", "build:test": "tsc -p . && rollup -c 2>&1", - "build:ts": "tsc -p .", - "build": "npm run build:ts && rollup -c 2>&1 && api-extractor run --local", - "check-format": "prettier --list-different \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", - "clean": "rimraf dist dist-* types *.tgz *.log", + "build": "tsc -p . && rollup -c 2>&1 && api-extractor run --local", + "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "clean": "rimraf dist dist-* temp types *.tgz *.log", + "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src", "execute:samples": "echo skipped", - "extract-api": "npm run build:ts && api-extractor run --local", - "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "extract-api": "tsc -p . && api-extractor run --local", + "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", "integration-test:node": "echo skipped", "integration-test": "npm run integration-test:node && npm run integration-test:browser", @@ -29,13 +27,12 @@ "lint": "eslint package.json api-extractor.json src test --ext .ts", "pack": "npm pack 2>&1", "prebuild": "npm run clean", - "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser", - "test:node": "npm run clean && npm run build:test && npm run unit-test:node", - "test": "npm run clean && npm run build:test && npm run unit-test", + "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser", + "test:node": "npm run clean && tsc -p . && npm run unit-test:node && npm run integration-test:node", + "test": "npm run clean && tsc -p . && npm run unit-test:node && rollup -c 2>&1 && npm run unit-test:browser && npm run integration-test", "unit-test:browser": "karma start --single-run", - "unit-test:node": "mocha -r esm --require ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace \"test/{,!(browser)/**/}*.spec.ts\"", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src" + "unit-test:node": "mocha -r esm -r ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace --exclude \"test/**/browser/*.spec.ts\" \"test/**/*.spec.ts\"", + "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "files": [ "dist/", diff --git a/sdk/core/core-client/package.json b/sdk/core/core-client/package.json index 54de5d5ea995..74966db3cb19 100644 --- a/sdk/core/core-client/package.json +++ b/sdk/core/core-client/package.json @@ -19,23 +19,16 @@ }, "scripts": { "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", - "build:browser": "npm run build:ts && cross-env ONLY_BROWSER=true rollup -c 2>&1", - "build:node": "npm run build:ts && cross-env ONLY_NODE=true rollup -c 2>&1", - "build:samples": "echo Skipped.", - "build:test": "npm run build:ts && npm run bundle:test", - "build:test:browser": "npm run build:ts && npm run bundle:test:browser", - "build:test:node": "npm run build:ts && npm run bundle:test:node", - "build:ts": "tsc -p .", + "build:samples": "echo Obsolete", + "build:test": "tsc -p . && rollup -c 2>&1", "build:types": "downlevel-dts types/latest/ types/3.1/", - "build": "npm run build:ts && rollup -c 2>&1 && api-extractor run --local && npm run build:types", - "bundle:test": "rollup -c rollup.test.config.js 2>&1", - "bundle:test:browser": "cross-env ONLY_BROWSER=true rollup -c rollup.test.config.js 2>&1", - "bundle:test:node": "cross-env ONLY_NODE=true rollup -c rollup.test.config.js 2>&1", - "check-format": "prettier --list-different \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", - "clean": "rimraf dist dist-* types *.tgz *.log", + "build": "tsc -p . && rollup -c 2>&1 && api-extractor run --local && npm run build:types", + "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "clean": "rimraf dist dist-* temp types *.tgz *.log", + "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src", "execute:samples": "echo skipped", - "extract-api": "npm run build:ts && api-extractor run --local", - "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "extract-api": "tsc -p . && api-extractor run --local", + "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", "integration-test:node": "echo skipped", "integration-test": "npm run integration-test:node && npm run integration-test:browser", @@ -43,13 +36,12 @@ "lint": "eslint package.json api-extractor.json src test --ext .ts", "pack": "npm pack 2>&1", "prebuild": "npm run clean", - "test:browser": "npm run build:test:browser && npm run unit-test:browser && npm run integration-test:browser", - "test:node": "npm run build:test:node && npm run unit-test:node && npm run integration-test:node", - "test": "npm run clean && npm run build:ts && npm run bundle:test:node && npm run unit-test:node && npm run bundle:test:browser && npm run unit-test:browser && npm run integration-test:node && npm run integration-test:browser", + "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser", + "test:node": "npm run clean && tsc -p . && npm run unit-test:node && npm run integration-test:node", + "test": "npm run clean && tsc -p . && npm run unit-test:node && rollup -c 2>&1 && npm run unit-test:browser && npm run integration-test", "unit-test:browser": "karma start --single-run", - "unit-test:node": "cross-env TS_NODE_FILES=true mocha -r esm -r ts-node/register --timeout 50000 --reporter ../../../common/tools/mocha-multi-reporter.js --colors --exclude \"test/**/*.browser.ts\" \"test/**/*.ts\"", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src" + "unit-test:node": "cross-env TS_NODE_FILES=true mocha -r esm -r ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 50000 --full-trace --exclude \"test/**/browser/*.spec.ts\" \"test/**/*.spec.ts\"", + "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "files": [ "dist/", @@ -86,11 +78,6 @@ "devDependencies": { "@azure/core-xml": "1.0.0-beta.1", "@microsoft/api-extractor": "7.7.11", - "@rollup/plugin-commonjs": "11.0.2", - "@rollup/plugin-json": "^4.0.0", - "@rollup/plugin-multi-entry": "^3.0.0", - "@rollup/plugin-node-resolve": "^8.0.0", - "@rollup/plugin-replace": "^2.2.0", "@types/chai": "^4.1.6", "@types/mocha": "^7.0.2", "@types/node": "^12.0.0", @@ -118,9 +105,6 @@ "prettier": "^1.16.4", "rimraf": "^3.0.0", "rollup": "^1.16.3", - "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-terser": "^5.1.1", - "rollup-plugin-visualizer": "^4.0.4", "sinon": "^9.0.2", "typescript": "~4.2.0", "util": "^0.12.1", diff --git a/sdk/core/core-client/rollup.base.config.js b/sdk/core/core-client/rollup.base.config.js deleted file mode 100644 index 54b8fb108c4b..000000000000 --- a/sdk/core/core-client/rollup.base.config.js +++ /dev/null @@ -1,121 +0,0 @@ -import path from "path"; -import nodeResolve from "@rollup/plugin-node-resolve"; -import multiEntry from "@rollup/plugin-multi-entry"; -import cjs from "@rollup/plugin-commonjs"; -import replace from "@rollup/plugin-replace"; -import { terser } from "rollup-plugin-terser"; -import sourcemaps from "rollup-plugin-sourcemaps"; -import viz from "rollup-plugin-visualizer"; -import { openTelemetryCommonJs } from "@azure/dev-tool/shared-config/rollup"; - -const pkg = require("./package.json"); -const depNames = Object.keys(pkg.dependencies); -const devDepNames = Object.keys(pkg.devDependencies); -const input = "dist-esm/src/index.js"; -const production = process.env.NODE_ENV === "production"; - -export function nodeConfig(test = false) { - const externalNodeBuiltins = ["url"]; - const baseConfig = { - input: input, - external: depNames.concat(externalNodeBuiltins), - output: { file: "dist/index.js", format: "cjs", sourcemap: true }, - preserveSymlinks: false, - plugins: [ - sourcemaps(), - replace({ - delimiters: ["", ""], - values: { - // replace dynamic checks with if (true) since this is for node only. - // Allows rollup's dead code elimination to be more aggressive. - "if (isNode)": "if (true)" - } - }), - nodeResolve({ preferBuiltins: true }), - cjs() - ] - }; - - if (test) { - // Entry points - test files under the `test` folder(common for both browser and node), node specific test files - baseConfig.input = ["dist-esm/test/*.spec.js", "dist-esm/test/node/*.spec.js"]; - baseConfig.plugins.unshift(multiEntry({ exports: false })); - - // different output file - baseConfig.output.file = "dist-test/index.node.js"; - - // mark devdeps as external - baseConfig.external.push(...devDepNames); - - // Disable tree-shaking of test code. In rollup-plugin-node-resolve@5.0.0, rollup started respecting - // the "sideEffects" field in package.json. Since our package.json sets "sideEffects=false", this also - // applies to test code, which causes all tests to be removed by tree-shaking. - baseConfig.treeshake = false; - } else if (production) { - baseConfig.plugins.push(terser()); - } - - return baseConfig; -} - -export function browserConfig(test = false) { - const baseConfig = { - input: input, - output: { - file: "dist-browser/azure-core-client.js", - format: "umd", - name: "Azure.Core.Client", - sourcemap: true - }, - preserveSymlinks: false, - plugins: [ - sourcemaps(), - replace({ - delimiters: ["", ""], - values: { - // replace dynamic checks with if (false) since this is for - // browser only. Rollup's dead code elimination will remove - // any code guarded by if (isNode) { ... } - "if (isNode)": "if (false)" - } - }), - nodeResolve({ - mainFields: ["module", "browser"], - preferBuiltins: false - }), - cjs({ - namedExports: { - chai: ["assert"], - ...openTelemetryCommonJs() - } - }), - viz({ filename: "dist-browser/browser-stats.html", sourcemap: false }) - ] - }; - - if (test) { - // Entry points - test files under the `test` folder(common for both browser and node), browser specific test files - baseConfig.input = ["dist-esm/test/*.spec.js", "dist-esm/test/browser/*.spec.js"]; - baseConfig.plugins.unshift(multiEntry({ exports: false })); - baseConfig.output.file = "dist-test/index.browser.js"; - - baseConfig.onwarn = (warning) => { - if ( - warning.code === "CIRCULAR_DEPENDENCY" && - warning.importer.indexOf(path.normalize("node_modules/chai/lib") === 0) - ) { - // Chai contains circular references, but they are not fatal and can be ignored. - return; - } - - console.error(`(!) ${warning.message}`); - }; - - // Disable tree-shaking of test code. In rollup-plugin-node-resolve@5.0.0, rollup started respecting - // the "sideEffects" field in package.json. Since our package.json sets "sideEffects=false", this also - // applies to test code, which causes all tests to be removed by tree-shaking. - baseConfig.treeshake = false; - } - - return baseConfig; -} diff --git a/sdk/core/core-client/rollup.config.js b/sdk/core/core-client/rollup.config.js index 14652aa67ed8..5d7deee44c14 100644 --- a/sdk/core/core-client/rollup.config.js +++ b/sdk/core/core-client/rollup.config.js @@ -1,13 +1,3 @@ -import * as base from "./rollup.base.config"; +import { makeConfig } from "@azure/dev-tool/shared-config/rollup"; -const inputs = []; - -if (!process.env.ONLY_BROWSER) { - inputs.push(base.nodeConfig()); -} - -if (!process.env.ONLY_NODE) { - inputs.push(base.browserConfig()); -} - -export default inputs; +export default makeConfig(require("./package.json")); diff --git a/sdk/core/core-client/rollup.test.config.js b/sdk/core/core-client/rollup.test.config.js deleted file mode 100644 index fc843df2b5a3..000000000000 --- a/sdk/core/core-client/rollup.test.config.js +++ /dev/null @@ -1,13 +0,0 @@ -import * as base from "./rollup.base.config"; - -const inputs = []; - -if (!process.env.ONLY_BROWSER) { - inputs.push(base.nodeConfig(true)); -} - -if (!process.env.ONLY_NODE) { - inputs.push(base.browserConfig(true)); -} - -export default inputs; diff --git a/sdk/core/core-crypto/package.json b/sdk/core/core-crypto/package.json index 231b41e1e5b7..04d29d96875a 100644 --- a/sdk/core/core-crypto/package.json +++ b/sdk/core/core-crypto/package.json @@ -18,23 +18,16 @@ }, "scripts": { "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", - "build:browser": "npm run build:ts && cross-env ONLY_BROWSER=true rollup -c 2>&1", - "build:node": "npm run build:ts && cross-env ONLY_NODE=true rollup -c 2>&1", - "build:samples": "echo Skipped.", - "build:test": "npm run build:ts && npm run bundle:test", - "build:test:browser": "npm run build:ts && npm run bundle:test:browser", - "build:test:node": "npm run build:ts && npm run bundle:test:node", - "build:ts": "tsc -p .", + "build:samples": "echo Obsolete", + "build:test": "tsc -p . && rollup -c rollup.test.config.js 2>&1", "build:types": "downlevel-dts types/latest/ types/3.1/", - "build": "npm run build:ts && rollup -c 2>&1 && api-extractor run --local && npm run build:types", - "bundle:test": "rollup -c rollup.test.config.js 2>&1", - "bundle:test:browser": "cross-env ONLY_BROWSER=true rollup -c rollup.test.config.js 2>&1", - "bundle:test:node": "cross-env ONLY_NODE=true rollup -c rollup.test.config.js 2>&1", - "check-format": "prettier --list-different \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", - "clean": "rimraf dist dist-* types *.tgz *.log", + "build": "tsc -p . && rollup -c 2>&1 && api-extractor run --local && npm run build:types", + "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "clean": "rimraf dist dist-* temp types *.tgz *.log", + "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src", "execute:samples": "echo skipped", - "extract-api": "npm run build:ts && api-extractor run --local", - "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "extract-api": "tsc -p . && api-extractor run --local", + "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", "integration-test:node": "echo skipped", "integration-test": "npm run integration-test:node && npm run integration-test:browser", @@ -42,13 +35,12 @@ "lint": "eslint package.json api-extractor.json src test --ext .ts", "pack": "npm pack 2>&1", "prebuild": "npm run clean", - "test:browser": "npm run build:test:browser && npm run unit-test:browser && npm run integration-test:browser", - "test:node": "npm run build:test:node && npm run unit-test:node && npm run integration-test:node", - "test": "npm run clean && npm run build:ts && npm run bundle:test:node && npm run unit-test:node && npm run bundle:test:browser && npm run unit-test:browser && npm run integration-test:node && npm run integration-test:browser", + "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser", + "test:node": "npm run clean && tsc -p . && npm run unit-test:node && npm run integration-test:node", + "test": "npm run clean && tsc -p . && npm run unit-test:node && rollup -c rollup.test.config.js 2>&1 && npm run unit-test:browser && npm run integration-test", "unit-test:browser": "karma start --single-run", - "unit-test:node": "cross-env TS_NODE_FILES=true mocha -r esm -r ts-node/register --timeout 50000 --reporter ../../../common/tools/mocha-multi-reporter.js --colors --exclude \"test/**/borwser/*.spec.ts\" \"test/*/*.spec.ts\"", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --mode file --out ./dist/docs ./src" + "unit-test:node": "mocha -r esm -r ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 50000 --full-trace --exclude \"test/**/browser/*.spec.ts\" \"test/**/*.spec.ts\"", + "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "files": [ "dist/", @@ -82,8 +74,6 @@ "@azure/dev-tool": "^1.0.0", "@microsoft/api-extractor": "7.7.11", "@rollup/plugin-commonjs": "11.0.2", - "@rollup/plugin-json": "^4.0.0", - "@rollup/plugin-multi-entry": "^3.0.0", "@rollup/plugin-node-resolve": "^8.0.0", "@rollup/plugin-replace": "^2.2.0", "@types/chai": "^4.1.6", @@ -91,7 +81,6 @@ "@types/node": "^12.0.0", "@types/sinon": "^9.0.4", "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "assert": "^1.4.1", "chai": "^4.2.0", "downlevel-dts": "~0.4.0", "cross-env": "^7.0.2", @@ -113,7 +102,6 @@ "rimraf": "^3.0.0", "rollup": "^1.16.3", "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-terser": "^5.1.1", "sinon": "^9.0.2", "typescript": "~4.2.0", "typedoc": "0.15.2" diff --git a/sdk/core/core-crypto/test/internal/browser/base64.spec.ts b/sdk/core/core-crypto/test/internal/browser/base64.spec.ts index 6f23bd287271..26fe3e67afe5 100644 --- a/sdk/core/core-crypto/test/internal/browser/base64.spec.ts +++ b/sdk/core/core-crypto/test/internal/browser/base64.spec.ts @@ -1,8 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import assert from "assert"; - +import { assert } from "chai"; import { base64ToBytes, bufferToBase64 } from "../../../src/utils/base64.browser"; describe("Base64", function() { diff --git a/sdk/core/core-crypto/test/internal/browser/utf8.spec.ts b/sdk/core/core-crypto/test/internal/browser/utf8.spec.ts index caedfe149c37..86b8ec043918 100644 --- a/sdk/core/core-crypto/test/internal/browser/utf8.spec.ts +++ b/sdk/core/core-crypto/test/internal/browser/utf8.spec.ts @@ -1,8 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import assert from "assert"; - +import { assert } from "chai"; import { utf8ToBytes } from "../../../src/utils/utf8.browser"; describe("utf-8", function() { diff --git a/sdk/core/core-crypto/test/internal/hex.spec.ts b/sdk/core/core-crypto/test/internal/hex.spec.ts index be05588c0c66..b362a8ae81ac 100644 --- a/sdk/core/core-crypto/test/internal/hex.spec.ts +++ b/sdk/core/core-crypto/test/internal/hex.spec.ts @@ -1,8 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import assert from "assert"; - +import { assert } from "chai"; import { bufferToHex } from "../../src/utils/hex"; function generateValidBytes(): Uint8Array { diff --git a/sdk/core/core-crypto/test/public/browser/webworker-runner.spec.ts b/sdk/core/core-crypto/test/public/browser/webworker-runner.spec.ts index 53237d38373f..57bf00724f9e 100644 --- a/sdk/core/core-crypto/test/public/browser/webworker-runner.spec.ts +++ b/sdk/core/core-crypto/test/public/browser/webworker-runner.spec.ts @@ -1,8 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import assert from "assert"; - +import { assert } from "chai"; import { HashMessage, HmacMessage } from "./webworker"; describe("SHA-256 (WebWorker)", function() { diff --git a/sdk/core/core-crypto/test/public/sha256.spec.ts b/sdk/core/core-crypto/test/public/sha256.spec.ts index a0809592a380..6c123d19982c 100644 --- a/sdk/core/core-crypto/test/public/sha256.spec.ts +++ b/sdk/core/core-crypto/test/public/sha256.spec.ts @@ -1,8 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import assert from "assert"; - +import { assert } from "chai"; import { computeSha256Hash, computeSha256Hmac } from "../../src/index"; describe("SHA-256", function() { diff --git a/sdk/core/core-http/package.json b/sdk/core/core-http/package.json index 8db55eeba597..45561575c5e0 100644 --- a/sdk/core/core-http/package.json +++ b/sdk/core/core-http/package.json @@ -64,17 +64,15 @@ }, "scripts": { "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", - "build": "tsc -p tsconfig.es.json && npm run build:nodebrowser && npm run extract-api:nobuild && npm run build:types", - "build:scripts": "tsc -p ./.scripts/", + "build:samples": "echo Obsolete", "build:test": "tsc -p tsconfig.es.json && rollup -c 2>&1", "build:types": "downlevel-dts types/latest/ types/3.1/", - "build:nodebrowser": "rollup -c 2>&1", + "build": "tsc -p tsconfig.es.json && rollup -c 2>&1 && api-extractor run --local && npm run build:types", "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", "clean": "rimraf dist dist-* temp types *.tgz *.log", "execute:samples": "echo skipped", "extract-api": "tsc -p tsconfig.es.json && api-extractor run --local", - "extract-api:nobuild": "api-extractor run --local", - "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", "integration-test:node": "echo skipped", "integration-test": "npm run integration-test:node && npm run integration-test:browser", @@ -82,22 +80,12 @@ "lint": "eslint package.json api-extractor.json src test --ext .ts", "pack": "npm pack 2>&1", "prebuild": "npm run clean", - "test:browser": "npm run build:test && npm run unit-test:browser && npm run integration-test:browser", - "test:node": "npm run build:test && npm run unit-test:node && npm run integration-test:node", - "test": "npm run build:test && npm run unit-test && npm run integration-test", + "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser", + "test:node": "npm run clean && tsc -p . && npm run unit-test:node && npm run integration-test:node", + "test": "npm run clean && tsc -p . && npm run unit-test:node && rollup -c 2>&1 && npm run unit-test:browser && npm run integration-test", "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "unit-test:browser": "node ./node_modules/karma/bin/karma start karma.conf.ts --browsers ChromeNoSecurity --single-run", - "unit-test:node": "cross-env TS_NODE_FILES=true mocha --require ts-node/register --timeout 50000 --reporter ../../../common/tools/mocha-multi-reporter.js --colors --exclude \"test/**/*.browser.ts\" \"test/**/*.ts\"", - "cover:unit:node": "nyc npm run unit-test:node", - "check:packagejsonversion": "ts-node ./.scripts/checkPackageJsonVersion.ts", - "check:foronlycalls": "ts-node ./.scripts/checkForOnlyCalls.ts", - "check:everything": "ts-node ./.scripts/checkEverything.ts", - "dep:autorest.typescript": "npx ts-node .scripts/testDependentProjects.ts autorest.typescript 'gulp build' 'gulp regenerate' 'npm run local'", - "dep:ms-rest-azure-js": "npx ts-node .scripts/testDependentProjects.ts ms-rest-azure-js", - "publish-preview": "mocha --no-colors && shx rm -rf dist/test && node ./.scripts/publish", - "local": "ts-node ./.scripts/local.ts", - "latest": "ts-node ./.scripts/latest.ts", - "build:samples": "echo Skipped.", + "unit-test:browser": "karma start --single-run", + "unit-test:node": "cross-env TS_NODE_FILES=true mocha -r esm -r ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 500000 --full-trace --exclude \"test/**/*.browser.ts\" \"test/**/*.ts\"", "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src" }, "sideEffects": false, diff --git a/sdk/core/core-lro/.gitignore b/sdk/core/core-lro/.gitignore deleted file mode 100644 index e6fbceb18938..000000000000 --- a/sdk/core/core-lro/.gitignore +++ /dev/null @@ -1,22 +0,0 @@ -/node_modules - -output/* -package-lock.json - -# Typescript output -.nyc_output/ -coverage/ -dist/ -*.d.ts.map -*.js -*.js.map -test-results.xml - -# Rollup -!rollup.config.js -!rollup.base.config.js -!rollup.test.config.js -*-stats.html - -# Karma -!karma.conf.js diff --git a/sdk/core/core-lro/package.json b/sdk/core/core-lro/package.json index 1aef46f31010..da57a3f614dc 100644 --- a/sdk/core/core-lro/package.json +++ b/sdk/core/core-lro/package.json @@ -65,33 +65,28 @@ }, "scripts": { "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", - "build": "tsc -p . && npm run build:nodebrowser && api-extractor run --local", - "build:samples": "echo Skipped.", - "build:nodebrowser": "rollup -c 2>&1", - "build:node": "tsc -p . && cross-env ONLY_NODE=true rollup -c 2>&1 && npm run extract-api", - "build:browser": "tsc -p . && cross-env ONLY_BROWSER=true rollup -c 2>&1", - "build:test": "tsc -p . && rollup -c rollup.test.config.js 2>&1", - "build:test:node": "tsc -p . && cross-env ONLY_NODE=true rollup -c rollup.test.config.js 2>&1", - "build:test:browser": "tsc -p . && cross-env ONLY_BROWSER=true rollup -c rollup.test.config.js 2>&1", - "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"*.{js,json}\" \"test/**/*.ts\" \"samples/**/*.ts\"", + "build:samples": "echo Obsolete", + "build:test": "tsc -p . && rollup -c 2>&1", + "build": "tsc -p . && rollup -c 2>&1 && api-extractor run --local", + "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src", + "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", "clean": "rimraf dist dist-* types *.log browser statistics.html coverage src/**/*.js test/**/*.js", "execute:samples": "echo skipped", "extract-api": "tsc -p . && api-extractor run --local", - "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"*.{js,json}\" \"test/**/*.ts\" \"samples/**/*.ts\"", + "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", "integration-test:node": "echo skipped", "integration-test": "npm run integration-test:node && npm run integration-test:browser", "lint:fix": "eslint package.json api-extractor.json src test --ext .ts --fix --fix-type [problem,suggestion]", "lint": "eslint package.json api-extractor.json src test --ext .ts", - "test:browser": "npm run build:test:browser && npm run unit-test:browser && npm run integration-test:browser", - "test:node": "npm run build:test:node && npm run unit-test:node && npm run integration-test:node", + "pack": "npm pack 2>&1", + "prebuild": "npm run clean", + "test:browser": "npm run build:test && npm run unit-test:browser && npm run integration-test:browser", + "test:node": "npm run build:test && npm run unit-test:node && npm run integration-test:node", "test": "npm run build:test && npm run unit-test", "unit-test": "npm run unit-test:node && npm run unit-test:browser", "unit-test:browser": "karma start --single-run", - "unit-test:node": "nyc mocha --require source-map-support/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace \"dist-test/index.node.js\"", - "pack": "npm pack 2>&1", - "prebuild": "npm run clean", - "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src" + "unit-test:node": "cross-env TS_NODE_FILES=true TS_NODE_COMPILER_OPTIONS=\"{\\\"module\\\":\\\"commonjs\\\"}\" nyc mocha -r ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace --exclude \"test/**/browser/*.spec.ts\" \"test/**/*.spec.ts\"" }, "sideEffects": false, "dependencies": { @@ -112,7 +107,6 @@ "@types/chai": "^4.1.6", "@types/mocha": "^7.0.2", "@types/node": "^12.0.0", - "assert": "^1.4.1", "chai": "^4.2.0", "cross-env": "^7.0.2", "eslint": "^7.15.0", diff --git a/sdk/core/core-lro/rollup.base.config.js b/sdk/core/core-lro/rollup.base.config.js deleted file mode 100644 index 7b7888881008..000000000000 --- a/sdk/core/core-lro/rollup.base.config.js +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -import nodeResolve from "@rollup/plugin-node-resolve"; -import multiEntry from "@rollup/plugin-multi-entry"; -import cjs from "@rollup/plugin-commonjs"; -import replace from "@rollup/plugin-replace"; -import { terser } from "rollup-plugin-terser"; -import sourcemaps from "rollup-plugin-sourcemaps"; -import shim from "rollup-plugin-shim"; -import { openTelemetryCommonJs } from "@azure/dev-tool/shared-config/rollup"; - -/** - * @type {import('rollup').RollupFileOptions} - */ - -const pkg = require("./package.json"); -const version = pkg.version; -const banner = [ - "/*!", - " * Copyright (c) Microsoft and contributors. All rights reserved.", - " * Licensed under the MIT License. See License.txt in the project root for", - " * license information.", - " * ", - ` * Azure Core LRO SDK for JavaScript - ${version}`, - " */" -].join("\n"); - -const depNames = Object.keys(pkg.dependencies); -const devDepNames = Object.keys(pkg.devDependencies); -const production = process.env.NODE_ENV === "production"; - -export function nodeConfig(test = false) { - const externalNodeBuiltins = ["crypto", "fs", "os", "url", "assert"]; - const baseConfig = { - input: "dist-esm/src/index.js", - external: depNames.concat(externalNodeBuiltins), - output: { - file: "dist/index.js", - format: "cjs", - name: "azurecorelro", - sourcemap: true, - banner: banner - }, - plugins: [ - sourcemaps(), - replace({ - delimiters: ["", ""], - // replace dynamic checks with if (true) since this is for node only. - // Allows rollup's dead code elimination to be more aggressive. - "if (isNode)": "if (true)" - }), - nodeResolve({ preferBuiltins: true }), - cjs() - ] - }; - - if (test) { - // entry point is every test file - baseConfig.input = ["dist-esm/test/*.test.js"]; - baseConfig.plugins.unshift(multiEntry({ exports: false })); - - // mark devdeps as external - baseConfig.external.push(...devDepNames); - - // different output file - baseConfig.output.file = "dist-test/index.node.js"; - - baseConfig.external.push("assert", "fs", "path"); - - baseConfig.context = "null"; - - // Disable tree-shaking of test code. In rollup-plugin-node-resolve@5.0.0, rollup started respecting - // the "sideEffects" field in package.json. Since our package.json sets "sideEffects=false", this also - // applies to test code, which causes all tests to be removed by tree-shaking. - baseConfig.treeshake = false; - } else if (production) { - baseConfig.plugins.push(terser()); - } - - return baseConfig; -} - -export function browserConfig(test = false) { - const baseConfig = { - input: "dist-esm/src/index.js", - output: { - file: "browser/azure-core-lro.js", - banner: banner, - format: "umd", - name: "azurecorelro", - sourcemap: true - }, - preserveSymlinks: false, - plugins: [ - sourcemaps(), - replace({ - delimiters: ["", ""], - // replace dynamic checks with if (false) since this is for - // browser only. Rollup's dead code elimination will remove - // any code guarded by if (isNode) { ... } - "if (isNode)": "if (false)" - }), - // os is not used by the browser bundle, so just shim it - shim({ - dotenv: `export function config() { }`, - os: ` - export const type = 1; - export const release = 1; - ` - }), - nodeResolve({ - mainFields: ["module", "browser"], - preferBuiltins: false - }), - cjs({ - namedExports: { - assert: ["ok", "equal", "strictEqual"], - ...openTelemetryCommonJs() - } - }) - ] - }; - - baseConfig.external = ["fs-extra", "path", "crypto", "constants"]; - if (test) { - baseConfig.input = ["dist-esm/test/*.test.js"]; - baseConfig.plugins.unshift(multiEntry({ exports: false })); - baseConfig.output.file = "dist-test/index.browser.js"; - // mark fs-extra as external - baseConfig.context = "null"; - - // Disable tree-shaking of test code. In rollup-plugin-node-resolve@5.0.0, rollup started respecting - // the "sideEffects" field in package.json. Since our package.json sets "sideEffects=false", this also - // applies to test code, which causes all tests to be removed by tree-shaking. - baseConfig.treeshake = false; - } - - return baseConfig; -} diff --git a/sdk/core/core-lro/rollup.config.js b/sdk/core/core-lro/rollup.config.js index 53b75f9e5943..5d7deee44c14 100644 --- a/sdk/core/core-lro/rollup.config.js +++ b/sdk/core/core-lro/rollup.config.js @@ -1,14 +1,3 @@ -import * as base from "./rollup.base.config"; +import { makeConfig } from "@azure/dev-tool/shared-config/rollup"; -const inputs = []; - -if (!process.env.ONLY_BROWSER) { - inputs.push(base.nodeConfig()); -} - -// Disable this until we are ready to run rollup for the browser. -if (!process.env.ONLY_NODE) { - inputs.push(base.browserConfig()); -} - -export default inputs; +export default makeConfig(require("./package.json")); diff --git a/sdk/core/core-lro/rollup.test.config.js b/sdk/core/core-lro/rollup.test.config.js deleted file mode 100644 index ad98718cce46..000000000000 --- a/sdk/core/core-lro/rollup.test.config.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -import * as base from "./rollup.base.config"; - -export default [base.nodeConfig(true), base.browserConfig(true)]; diff --git a/sdk/core/core-lro/test/abort.test.ts b/sdk/core/core-lro/test/abort.spec.ts similarity index 99% rename from sdk/core/core-lro/test/abort.test.ts rename to sdk/core/core-lro/test/abort.spec.ts index 63434ccff820..6b740c2cf756 100644 --- a/sdk/core/core-lro/test/abort.test.ts +++ b/sdk/core/core-lro/test/abort.spec.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import assert from "assert"; +import { assert } from "chai"; import { delay, WebResource, HttpHeaders } from "@azure/core-http"; import { TestClient } from "./utils/testClient"; import { AbortController } from "@azure/abort-controller"; diff --git a/sdk/core/core-lro/test/testClient.test.ts b/sdk/core/core-lro/test/testClient.spec.ts similarity index 99% rename from sdk/core/core-lro/test/testClient.test.ts rename to sdk/core/core-lro/test/testClient.spec.ts index 7c2d3ee84692..447a529e723e 100644 --- a/sdk/core/core-lro/test/testClient.test.ts +++ b/sdk/core/core-lro/test/testClient.spec.ts @@ -4,7 +4,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import assert from "assert"; +import { assert } from "chai"; import { delay, WebResource, HttpHeaders, isNode } from "@azure/core-http"; import { TestClient } from "./utils/testClient"; import { PollerStoppedError, PollerCancelledError } from "../src"; diff --git a/sdk/core/core-paging/package.json b/sdk/core/core-paging/package.json index 1a29cc410e8b..bcb891d62839 100644 --- a/sdk/core/core-paging/package.json +++ b/sdk/core/core-paging/package.json @@ -43,12 +43,14 @@ }, "scripts": { "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", - "build": "tsc -p tsconfig.json && tsc -p tsconfig.es.json", + "build:samples": "echo Obsolete", "build:test": "echo skipped", - "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"*.{js,json}\"", - "clean": "rimraf dist dist-esm", + "build": "tsc -p tsconfig.json && tsc -p tsconfig.es.json", + "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "clean": "rimraf dist dist-* temp types *.tgz *.log", + "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src", "execute:samples": "echo skipped", - "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"*.{js,json}\"", + "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", "integration-test:node": "echo skipped", "integration-test": "npm run integration-test:node && npm run integration-test:browser", @@ -56,14 +58,12 @@ "lint:fix": "eslint package.json src --ext .ts --fix --fix-type [problem,suggestion]", "pack": "npm pack 2>&1", "prebuild": "npm run clean", - "test:browser": "npm run build:test && npm run unit-test:browser && npm run integration-test:browser", - "test:node": "npm run build:test && npm run unit-test:node && npm run integration-test:node", - "test": "npm run build:test && npm run unit-test && npm run integration-test", + "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser", + "test:node": "npm run clean && tsc -p . && npm run unit-test:node && npm run integration-test:node", + "test": "npm run clean && tsc -p . && npm run unit-test:node && rollup -c 2>&1 && npm run unit-test:browser && npm run integration-test", "unit-test:browser": "echo skipped", "unit-test:node": "echo skipped", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "build:samples": "echo Skipped.", - "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src" + "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "sideEffects": true, "private": false, diff --git a/sdk/core/core-rest-pipeline/package.json b/sdk/core/core-rest-pipeline/package.json index 6be69ef02ab8..7d96f707cdd5 100644 --- a/sdk/core/core-rest-pipeline/package.json +++ b/sdk/core/core-rest-pipeline/package.json @@ -24,23 +24,16 @@ }, "scripts": { "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", - "build:browser": "npm run build:ts && cross-env ONLY_BROWSER=true rollup -c 2>&1", - "build:node": "npm run build:ts && cross-env ONLY_NODE=true rollup -c 2>&1", - "build:samples": "echo Skipped.", - "build:test": "npm run build:ts && npm run bundle:test", - "build:test:browser": "npm run build:ts && npm run bundle:test:browser", - "build:test:node": "npm run build:ts && npm run bundle:test:node", - "build:ts": "tsc -p .", + "build:samples": "echo Obsolete", + "build:test": "tsc -p . && rollup -c 2>&1", "build:types": "downlevel-dts types/latest/ types/3.1/", - "build": "npm run build:ts && rollup -c 2>&1 && api-extractor run --local && npm run build:types", - "bundle:test": "rollup -c rollup.test.config.js 2>&1", - "bundle:test:browser": "cross-env ONLY_BROWSER=true rollup -c rollup.test.config.js 2>&1", - "bundle:test:node": "cross-env ONLY_NODE=true rollup -c rollup.test.config.js 2>&1", - "check-format": "prettier --list-different \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", - "clean": "rimraf dist dist-* types *.tgz *.log", + "build": "tsc -p . && rollup -c 2>&1 && api-extractor run --local && npm run build:types", + "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "clean": "rimraf dist dist-* temp types *.tgz *.log", + "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src", "execute:samples": "echo skipped", - "extract-api": "npm run build:ts && api-extractor run --local", - "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "extract-api": "tsc -p . && api-extractor run --local", + "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", "integration-test:node": "echo skipped", "integration-test": "npm run integration-test:node && npm run integration-test:browser", @@ -48,13 +41,12 @@ "lint": "eslint package.json api-extractor.json src test --ext .ts", "pack": "npm pack 2>&1", "prebuild": "npm run clean", - "test:browser": "npm run build:test:browser && npm run unit-test:browser && npm run integration-test:browser", - "test:node": "npm run build:test:node && npm run unit-test:node && npm run integration-test:node", - "test": "npm run clean && npm run build:ts && npm run bundle:test:node && npm run unit-test:node && npm run bundle:test:browser && npm run unit-test:browser && npm run integration-test:node && npm run integration-test:browser", + "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser", + "test:node": "npm run clean && tsc -p . && npm run unit-test:node && npm run integration-test:node", + "test": "npm run clean && tsc -p . && npm run unit-test:node && rollup -c 2>&1 && npm run unit-test:browser && npm run integration-test", "unit-test:browser": "karma start --single-run", - "unit-test:node": "mocha --require source-map-support/register --reporter ../../../common/tools/mocha-multi-reporter.js \"dist-test/index.node.js\"", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src" + "unit-test:node": "mocha -r esm -r ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace --exclude \"test/**/browser/*.spec.ts\" \"test/**/*.spec.ts\"", + "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "files": [ "dist/", @@ -103,11 +95,6 @@ }, "devDependencies": { "@microsoft/api-extractor": "7.7.11", - "@rollup/plugin-commonjs": "11.0.2", - "@rollup/plugin-json": "^4.0.0", - "@rollup/plugin-multi-entry": "^3.0.0", - "@rollup/plugin-node-resolve": "^8.0.0", - "@rollup/plugin-replace": "^2.2.0", "@types/chai": "^4.1.6", "@types/mocha": "^7.0.2", "@types/node": "^12.0.0", @@ -136,9 +123,6 @@ "prettier": "^1.16.4", "rimraf": "^3.0.0", "rollup": "^1.16.3", - "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-terser": "^5.1.1", - "rollup-plugin-visualizer": "^4.0.4", "sinon": "^9.0.2", "source-map-support": "^0.5.9", "typescript": "~4.2.0", diff --git a/sdk/core/core-rest-pipeline/rollup.base.config.js b/sdk/core/core-rest-pipeline/rollup.base.config.js deleted file mode 100644 index 174ec9f0c643..000000000000 --- a/sdk/core/core-rest-pipeline/rollup.base.config.js +++ /dev/null @@ -1,117 +0,0 @@ -import path from "path"; -import nodeResolve from "@rollup/plugin-node-resolve"; -import multiEntry from "@rollup/plugin-multi-entry"; -import cjs from "@rollup/plugin-commonjs"; -import replace from "@rollup/plugin-replace"; -import { terser } from "rollup-plugin-terser"; -import sourcemaps from "rollup-plugin-sourcemaps"; -import viz from "rollup-plugin-visualizer"; -import { openTelemetryCommonJs } from "@azure/dev-tool/shared-config/rollup"; - -const pkg = require("./package.json"); -const depNames = Object.keys(pkg.dependencies); -const devDepNames = Object.keys(pkg.devDependencies); -const input = "dist-esm/src/index.js"; -const production = process.env.NODE_ENV === "production"; - -export function nodeConfig(test = false) { - const externalNodeBuiltins = ["os", "stream", "http", "https", "zlib", "url", "util"]; - const baseConfig = { - input: input, - external: depNames.concat(externalNodeBuiltins), - output: { file: "dist/index.js", format: "cjs", sourcemap: true }, - preserveSymlinks: false, - plugins: [ - sourcemaps(), - replace({ - delimiters: ["", ""], - // replace dynamic checks with if (true) since this is for node only. - // Allows rollup's dead code elimination to be more aggressive. - "if (isNode)": "if (true)" - }), - nodeResolve({ preferBuiltins: true }), - cjs() - ] - }; - - if (test) { - // Entry points - test files under the `test` folder(common for both browser and node), node specific test files - baseConfig.input = ["dist-esm/test/*.spec.js", "dist-esm/test/node/*.spec.js"]; - baseConfig.plugins.unshift(multiEntry({ exports: false })); - - // different output file - baseConfig.output.file = "dist-test/index.node.js"; - - // mark devdeps as external - baseConfig.external.push(...devDepNames); - - // Disable tree-shaking of test code. In rollup-plugin-node-resolve@5.0.0, rollup started respecting - // the "sideEffects" field in package.json. Since our package.json sets "sideEffects=false", this also - // applies to test code, which causes all tests to be removed by tree-shaking. - baseConfig.treeshake = false; - } else if (production) { - baseConfig.plugins.push(terser()); - } - - return baseConfig; -} - -export function browserConfig(test = false) { - const baseConfig = { - input: input, - output: { - file: "dist-browser/azure-core-rest-pipeline.js", - format: "umd", - name: "Azure.Core.RestPipeline", - sourcemap: true - }, - preserveSymlinks: false, - plugins: [ - sourcemaps(), - replace({ - delimiters: ["", ""], - // replace dynamic checks with if (false) since this is for - // browser only. Rollup's dead code elimination will remove - // any code guarded by if (isNode) { ... } - "if (isNode)": "if (false)" - }), - nodeResolve({ - mainFields: ["module", "browser"], - preferBuiltins: false - }), - cjs({ - namedExports: { - chai: ["assert"], - ...openTelemetryCommonJs() - } - }), - viz({ filename: "dist-browser/browser-stats.html", sourcemap: false }) - ] - }; - - if (test) { - // Entry points - test files under the `test` folder(common for both browser and node), browser specific test files - baseConfig.input = ["dist-esm/test/*.spec.js", "dist-esm/test/browser/*.spec.js"]; - baseConfig.plugins.unshift(multiEntry({ exports: false })); - baseConfig.output.file = "dist-test/index.browser.js"; - - baseConfig.onwarn = (warning) => { - if ( - warning.code === "CIRCULAR_DEPENDENCY" && - warning.importer.indexOf(path.normalize("node_modules/chai/lib") === 0) - ) { - // Chai contains circular references, but they are not fatal and can be ignored. - return; - } - - console.error(`(!) ${warning.message}`); - }; - - // Disable tree-shaking of test code. In rollup-plugin-node-resolve@5.0.0, rollup started respecting - // the "sideEffects" field in package.json. Since our package.json sets "sideEffects=false", this also - // applies to test code, which causes all tests to be removed by tree-shaking. - baseConfig.treeshake = false; - } - - return baseConfig; -} diff --git a/sdk/core/core-rest-pipeline/rollup.config.js b/sdk/core/core-rest-pipeline/rollup.config.js index 14652aa67ed8..5d7deee44c14 100644 --- a/sdk/core/core-rest-pipeline/rollup.config.js +++ b/sdk/core/core-rest-pipeline/rollup.config.js @@ -1,13 +1,3 @@ -import * as base from "./rollup.base.config"; +import { makeConfig } from "@azure/dev-tool/shared-config/rollup"; -const inputs = []; - -if (!process.env.ONLY_BROWSER) { - inputs.push(base.nodeConfig()); -} - -if (!process.env.ONLY_NODE) { - inputs.push(base.browserConfig()); -} - -export default inputs; +export default makeConfig(require("./package.json")); diff --git a/sdk/core/core-rest-pipeline/rollup.test.config.js b/sdk/core/core-rest-pipeline/rollup.test.config.js deleted file mode 100644 index fc843df2b5a3..000000000000 --- a/sdk/core/core-rest-pipeline/rollup.test.config.js +++ /dev/null @@ -1,13 +0,0 @@ -import * as base from "./rollup.base.config"; - -const inputs = []; - -if (!process.env.ONLY_BROWSER) { - inputs.push(base.nodeConfig(true)); -} - -if (!process.env.ONLY_NODE) { - inputs.push(base.browserConfig(true)); -} - -export default inputs; diff --git a/sdk/core/core-tracing/package.json b/sdk/core/core-tracing/package.json index 39c672afade9..ee225312be38 100644 --- a/sdk/core/core-tracing/package.json +++ b/sdk/core/core-tracing/package.json @@ -11,16 +11,15 @@ "types": "types/core-tracing.d.ts", "scripts": { "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", - "build:browser": "tsc -p . && cross-env ONLY_BROWSER=true rollup -c 2>&1", - "build:node": "tsc -p . && cross-env ONLY_NODE=true rollup -c 2>&1", - "build:samples": "echo Skipped.", - "build:test": "tsc -p . && rollup -c rollup.test.config.js 2>&1", + "build:samples": "echo Obsolete", + "build:test": "tsc -p . && rollup -c 2>&1", "build": "tsc -p . && rollup -c 2>&1 && api-extractor run --local", "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", - "clean": "rimraf dist dist-* types *.tgz *.log", + "clean": "rimraf dist dist-* temp types *.tgz *.log", + "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src", "execute:samples": "echo skipped", "extract-api": "tsc -p . && api-extractor run --local", - "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", "integration-test:node": "echo skipped", "integration-test": "npm run integration-test:node && npm run integration-test:browser", @@ -28,13 +27,12 @@ "lint": "eslint package.json api-extractor.json src test --ext .ts", "pack": "npm pack 2>&1", "prebuild": "npm run clean", - "test:browser": "npm run build:test && npm run unit-test:browser && npm run integration-test:browser", - "test:node": "npm run build:test && npm run unit-test:node && npm run integration-test:node", - "test": "npm run build:test && npm run unit-test && npm run integration-test", + "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser", + "test:node": "npm run clean && tsc -p . && npm run unit-test:node && npm run integration-test:node", + "test": "npm run clean && tsc -p . && npm run unit-test:node && rollup -c 2>&1 && npm run unit-test:browser && npm run integration-test", "unit-test:browser": "karma start --single-run", - "unit-test:node": "mocha --reporter ../../../common/tools/mocha-multi-reporter.js \"dist-test/index.node.js\"", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src" + "unit-test:node": "mocha -r esm -r ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace --exclude \"test/**/browser/*.spec.ts\" \"test/**/*.spec.ts\"", + "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "files": [ "dist/", @@ -68,14 +66,10 @@ "@azure/dev-tool": "^1.0.0", "@azure/eslint-plugin-azure-sdk": "^3.0.0", "@microsoft/api-extractor": "7.7.11", - "@rollup/plugin-commonjs": "11.0.2", - "@rollup/plugin-json": "^4.0.0", - "@rollup/plugin-multi-entry": "^3.0.0", - "@rollup/plugin-node-resolve": "^8.0.0", - "@rollup/plugin-replace": "^2.2.0", + "@types/chai": "^4.1.6", "@types/mocha": "^7.0.2", "@types/node": "^12.0.0", - "assert": "^1.4.1", + "chai": "^4.2.0", "cross-env": "^7.0.2", "eslint": "^7.15.0", "inherits": "^2.0.3", @@ -95,9 +89,6 @@ "prettier": "^1.16.4", "rimraf": "^3.0.0", "rollup": "^1.16.3", - "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-terser": "^5.1.1", - "rollup-plugin-visualizer": "^4.0.4", "typescript": "~4.2.0", "util": "^0.12.1", "typedoc": "0.15.2", diff --git a/sdk/core/core-tracing/rollup.base.config.js b/sdk/core/core-tracing/rollup.base.config.js deleted file mode 100644 index 8c60fa082618..000000000000 --- a/sdk/core/core-tracing/rollup.base.config.js +++ /dev/null @@ -1,112 +0,0 @@ -import nodeResolve from "@rollup/plugin-node-resolve"; -import multiEntry from "@rollup/plugin-multi-entry"; -import cjs from "@rollup/plugin-commonjs"; -import replace from "@rollup/plugin-replace"; -import { terser } from "rollup-plugin-terser"; -import sourcemaps from "rollup-plugin-sourcemaps"; -import viz from "rollup-plugin-visualizer"; -import { openTelemetryCommonJs } from "@azure/dev-tool/shared-config/rollup"; - -const pkg = require("./package.json"); -const depNames = Object.keys(pkg.dependencies); -const input = "dist-esm/src/index.js"; -const production = process.env.NODE_ENV === "production"; - -export function nodeConfig(test = false) { - const externalNodeBuiltins = ["events"]; - const baseConfig = { - input: input, - external: depNames.concat(externalNodeBuiltins), - output: { file: "dist/index.js", format: "cjs", sourcemap: true }, - preserveSymlinks: false, - plugins: [ - sourcemaps(), - replace({ - delimiters: ["", ""], - // replace dynamic checks with if (true) since this is for node only. - // Allows rollup's dead code elimination to be more aggressive. - "if (isNode)": "if (true)" - }), - nodeResolve({ preferBuiltins: true }), - cjs() - ] - }; - - if (test) { - // entry point is every test file - baseConfig.input = "dist-esm/test/**/*.spec.js"; - baseConfig.plugins.unshift(multiEntry({ exports: false })); - - // different output file - baseConfig.output.file = "dist-test/index.node.js"; - - // mark assert as external - baseConfig.external.push("assert"); - - // Disable tree-shaking of test code. In rollup-plugin-node-resolve@5.0.0, rollup started respecting - // the "sideEffects" field in package.json. Since our package.json sets "sideEffects=false", this also - // applies to test code, which causes all tests to be removed by tree-shaking. - baseConfig.treeshake = false; - } else if (production) { - baseConfig.plugins.push(terser()); - } - - return baseConfig; -} - -export function browserConfig(test = false) { - const baseConfig = { - input: input, - output: { - file: "dist-browser/core-tracing.js", - format: "umd", - name: "Azure.Core.Tracing", - sourcemap: true - }, - preserveSymlinks: false, - plugins: [ - sourcemaps(), - replace({ - delimiters: ["", ""], - // replace dynamic checks with if (false) since this is for - // browser only. Rollup's dead code elimination will remove - // any code guarded by if (isNode) { ... } - "if (isNode)": "if (false)" - }), - nodeResolve({ - mainFields: ["module", "browser"], - preferBuiltins: false - }), - cjs({ - namedExports: { - ...openTelemetryCommonJs(), - assert: [ - "ok", - "fail", - "equal", - "deepEqual", - "deepStrictEqual", - "strictEqual", - "notDeepEqual", - "notStrictEqual", - "notDeepStrictEqual" - ] - } - }), - viz({ filename: "dist-browser/browser-stats.html", sourcemap: false }) - ] - }; - - if (test) { - baseConfig.input = "dist-esm/test/**/*.spec.js"; - baseConfig.plugins.unshift(multiEntry({ exports: false })); - baseConfig.output.file = "dist-test/index.browser.js"; - - // Disable tree-shaking of test code. In rollup-plugin-node-resolve@5.0.0, rollup started respecting - // the "sideEffects" field in package.json. Since our package.json sets "sideEffects=false", this also - // applies to test code, which causes all tests to be removed by tree-shaking. - baseConfig.treeshake = false; - } - - return baseConfig; -} diff --git a/sdk/core/core-tracing/rollup.config.js b/sdk/core/core-tracing/rollup.config.js index 14652aa67ed8..5d7deee44c14 100644 --- a/sdk/core/core-tracing/rollup.config.js +++ b/sdk/core/core-tracing/rollup.config.js @@ -1,13 +1,3 @@ -import * as base from "./rollup.base.config"; +import { makeConfig } from "@azure/dev-tool/shared-config/rollup"; -const inputs = []; - -if (!process.env.ONLY_BROWSER) { - inputs.push(base.nodeConfig()); -} - -if (!process.env.ONLY_NODE) { - inputs.push(base.browserConfig()); -} - -export default inputs; +export default makeConfig(require("./package.json")); diff --git a/sdk/core/core-tracing/rollup.test.config.js b/sdk/core/core-tracing/rollup.test.config.js deleted file mode 100644 index 925a4421a53e..000000000000 --- a/sdk/core/core-tracing/rollup.test.config.js +++ /dev/null @@ -1,3 +0,0 @@ -import * as base from "./rollup.base.config"; - -export default [base.nodeConfig(true), base.browserConfig(true)]; diff --git a/sdk/core/core-tracing/test/cache.spec.ts b/sdk/core/core-tracing/test/cache.spec.ts index 407f258056c9..95ba609d90e9 100644 --- a/sdk/core/core-tracing/test/cache.spec.ts +++ b/sdk/core/core-tracing/test/cache.spec.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import assert from "assert"; +import { assert } from "chai"; import * as fs from "fs"; import { Context } from "mocha"; import * as path from "path"; diff --git a/sdk/core/core-tracing/test/createSpan.spec.ts b/sdk/core/core-tracing/test/createSpan.spec.ts index 74baa0a00499..b061af092979 100644 --- a/sdk/core/core-tracing/test/createSpan.spec.ts +++ b/sdk/core/core-tracing/test/createSpan.spec.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import * as assert from "assert"; +import { assert } from "chai"; import sinon from "sinon"; import { setSpan, diff --git a/sdk/core/core-tracing/test/interfaces.spec.ts b/sdk/core/core-tracing/test/interfaces.spec.ts index 822086c2c29b..9326dc5957bd 100644 --- a/sdk/core/core-tracing/test/interfaces.spec.ts +++ b/sdk/core/core-tracing/test/interfaces.spec.ts @@ -4,7 +4,7 @@ import * as openTelemetry from "@opentelemetry/api"; import * as coreAuth from "@azure/core-auth"; import * as coreTracing from "../src/interfaces"; -import assert from "assert"; +import { assert } from "chai"; type coreAuthTracingOptions = Required["tracingOptions"]; diff --git a/sdk/core/core-tracing/test/traceParentHeader.spec.ts b/sdk/core/core-tracing/test/traceParentHeader.spec.ts index bfe70a73d20c..30bd3a2236a3 100644 --- a/sdk/core/core-tracing/test/traceParentHeader.spec.ts +++ b/sdk/core/core-tracing/test/traceParentHeader.spec.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import * as assert from "assert"; +import { assert } from "chai"; import { extractSpanContextFromTraceParentHeader, getTraceParentHeader } from "../src"; import { TraceFlags, SpanContext } from "@opentelemetry/api"; diff --git a/sdk/core/core-util/package.json b/sdk/core/core-util/package.json index 6bc737c40044..660d5bdbde39 100644 --- a/sdk/core/core-util/package.json +++ b/sdk/core/core-util/package.json @@ -18,16 +18,16 @@ }, "scripts": { "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", - "build:samples": "echo Skipped.", - "build:test": "echo Just call build instead", - "build:ts": "tsc -p .", + "build:samples": "echo Obsolete", + "build:test": "tsc -p . && rollup -c 2>&1", "build:types": "downlevel-dts types/latest/ types/3.1/", - "build": "npm run build:ts && rollup -c 2>&1 && api-extractor run --local && npm run build:types", - "check-format": "prettier --list-different \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", - "clean": "rimraf dist dist-* types *.tgz *.log", + "build": "tsc -p . && rollup -c 2>&1 && api-extractor run --local && npm run build:types", + "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "clean": "rimraf dist dist-* temp types *.tgz *.log", + "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src", "execute:samples": "echo skipped", - "extract-api": "npm run build:ts && api-extractor run --local", - "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "extract-api": "tsc -p . && api-extractor run --local", + "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", "integration-test:node": "echo skipped", "integration-test": "npm run integration-test:node && npm run integration-test:browser", @@ -35,13 +35,12 @@ "lint": "eslint package.json api-extractor.json src test --ext .ts", "pack": "npm pack 2>&1", "prebuild": "npm run clean", - "test:browser": "npm run build:test:browser && npm run unit-test:browser && npm run integration-test:browser", - "test:node": "npm run build:test:node && npm run unit-test:node && npm run integration-test:node", - "test": "npm run unit-test:node && npm run build && npm run unit-test:browser && npm run integration-test:node && npm run integration-test:browser", + "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser", + "test:node": "npm run clean && tsc -p . && npm run unit-test:node && npm run integration-test:node", + "test": "npm run clean && tsc -p . && npm run unit-test:node && rollup -c 2>&1 && npm run unit-test:browser && npm run integration-test", "unit-test:browser": "karma start --single-run", - "unit-test:node": "mocha -r esm --require ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace \"test/{,!(browser)/**/}*.spec.ts\"", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src" + "unit-test:node": "mocha -r esm -r ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace --exclude \"test/**/browser/*.spec.ts\" \"test/**/*.spec.ts\"", + "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "files": [ "dist/", @@ -73,11 +72,6 @@ "devDependencies": { "@azure/dev-tool": "^1.0.0", "@microsoft/api-extractor": "7.7.11", - "@rollup/plugin-commonjs": "11.0.2", - "@rollup/plugin-json": "^4.0.0", - "@rollup/plugin-multi-entry": "^3.0.0", - "@rollup/plugin-node-resolve": "^8.0.0", - "@rollup/plugin-replace": "^2.2.0", "@types/chai": "^4.1.6", "@types/mocha": "^7.0.2", "@types/node": "^12.0.0", @@ -104,9 +98,6 @@ "prettier": "^1.16.4", "rimraf": "^3.0.0", "rollup": "^1.16.3", - "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-terser": "^5.1.1", - "rollup-plugin-visualizer": "^4.0.4", "sinon": "^9.0.2", "typescript": "~4.2.0", "util": "^0.12.1", diff --git a/sdk/core/core-xml/package.json b/sdk/core/core-xml/package.json index 94274c63e30a..84535a28645e 100644 --- a/sdk/core/core-xml/package.json +++ b/sdk/core/core-xml/package.json @@ -18,23 +18,16 @@ }, "scripts": { "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", - "build:browser": "npm run build:ts && cross-env ONLY_BROWSER=true rollup -c 2>&1", - "build:node": "npm run build:ts && cross-env ONLY_NODE=true rollup -c 2>&1", - "build:samples": "echo Skipped.", - "build:test": "npm run build:ts && npm run bundle:test", - "build:test:browser": "npm run build:ts && npm run bundle:test:browser", - "build:test:node": "npm run build:ts && npm run bundle:test:node", - "build:ts": "tsc -p .", + "build:samples": "echo Obsolete", + "build:test": "tsc -p . && rollup -c 2>&1", "build:types": "downlevel-dts types/latest/ types/3.1/", - "build": "npm run build:ts && rollup -c 2>&1 && api-extractor run --local && npm run build:types", - "bundle:test": "rollup -c rollup.test.config.js 2>&1", - "bundle:test:browser": "cross-env ONLY_BROWSER=true rollup -c rollup.test.config.js 2>&1", - "bundle:test:node": "cross-env ONLY_NODE=true rollup -c rollup.test.config.js 2>&1", - "check-format": "prettier --list-different \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", - "clean": "rimraf dist dist-* types *.tgz *.log", + "build": "tsc -p . && rollup -c 2>&1 && api-extractor run --local && npm run build:types", + "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "clean": "rimraf dist dist-* temp types *.tgz *.log", + "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src", "execute:samples": "echo skipped", - "extract-api": "npm run build:ts && api-extractor run --local", - "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "extract-api": "tsc -p . && api-extractor run --local", + "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", "integration-test:node": "echo skipped", "integration-test": "npm run integration-test:node && npm run integration-test:browser", @@ -42,13 +35,12 @@ "lint": "eslint package.json api-extractor.json src test --ext .ts", "pack": "npm pack 2>&1", "prebuild": "npm run clean", - "test:browser": "npm run build:test:browser && npm run unit-test:browser && npm run integration-test:browser", - "test:node": "npm run build:test:node && npm run unit-test:node && npm run integration-test:node", - "test": "npm run clean && npm run build:ts && npm run bundle:test:node && npm run unit-test:node && npm run bundle:test:browser && npm run unit-test:browser && npm run integration-test:node && npm run integration-test:browser", + "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser", + "test:node": "npm run clean && tsc -p . && npm run unit-test:node && npm run integration-test:node", + "test": "npm run clean && tsc -p . && npm run unit-test:node && rollup -c 2>&1 && npm run unit-test:browser && npm run integration-test", "unit-test:browser": "karma start --single-run", - "unit-test:node": "mocha --require source-map-support/register --reporter ../../../common/tools/mocha-multi-reporter.js \"dist-test/index.node.js\"", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src" + "unit-test:node": "mocha -r esm -r ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace --exclude \"test/**/browser/*.spec.ts\" \"test/**/*.spec.ts\"", + "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "files": [ "dist/", @@ -79,19 +71,14 @@ "xml2js": "^0.4.19" }, "devDependencies": { + "@azure/dev-tool": "^1.0.0", "@microsoft/api-extractor": "7.7.11", - "@rollup/plugin-commonjs": "11.0.2", - "@rollup/plugin-json": "^4.0.0", - "@rollup/plugin-multi-entry": "^3.0.0", - "@rollup/plugin-node-resolve": "^8.0.0", - "@rollup/plugin-replace": "^2.2.0", "@types/chai": "^4.1.6", "@types/mocha": "^7.0.2", "@types/node": "^12.0.0", "@types/sinon": "^9.0.4", "@types/xml2js": "^0.4.3", "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@azure/dev-tool": "^1.0.0", "chai": "^4.2.0", "downlevel-dts": "~0.4.0", "cross-env": "^7.0.2", @@ -113,9 +100,6 @@ "prettier": "^1.16.4", "rimraf": "^3.0.0", "rollup": "^1.16.3", - "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-terser": "^5.1.1", - "rollup-plugin-visualizer": "^4.0.4", "sinon": "^9.0.2", "typescript": "~4.2.0", "util": "^0.12.1", diff --git a/sdk/core/core-xml/rollup.base.config.js b/sdk/core/core-xml/rollup.base.config.js deleted file mode 100644 index 54b8fb108c4b..000000000000 --- a/sdk/core/core-xml/rollup.base.config.js +++ /dev/null @@ -1,121 +0,0 @@ -import path from "path"; -import nodeResolve from "@rollup/plugin-node-resolve"; -import multiEntry from "@rollup/plugin-multi-entry"; -import cjs from "@rollup/plugin-commonjs"; -import replace from "@rollup/plugin-replace"; -import { terser } from "rollup-plugin-terser"; -import sourcemaps from "rollup-plugin-sourcemaps"; -import viz from "rollup-plugin-visualizer"; -import { openTelemetryCommonJs } from "@azure/dev-tool/shared-config/rollup"; - -const pkg = require("./package.json"); -const depNames = Object.keys(pkg.dependencies); -const devDepNames = Object.keys(pkg.devDependencies); -const input = "dist-esm/src/index.js"; -const production = process.env.NODE_ENV === "production"; - -export function nodeConfig(test = false) { - const externalNodeBuiltins = ["url"]; - const baseConfig = { - input: input, - external: depNames.concat(externalNodeBuiltins), - output: { file: "dist/index.js", format: "cjs", sourcemap: true }, - preserveSymlinks: false, - plugins: [ - sourcemaps(), - replace({ - delimiters: ["", ""], - values: { - // replace dynamic checks with if (true) since this is for node only. - // Allows rollup's dead code elimination to be more aggressive. - "if (isNode)": "if (true)" - } - }), - nodeResolve({ preferBuiltins: true }), - cjs() - ] - }; - - if (test) { - // Entry points - test files under the `test` folder(common for both browser and node), node specific test files - baseConfig.input = ["dist-esm/test/*.spec.js", "dist-esm/test/node/*.spec.js"]; - baseConfig.plugins.unshift(multiEntry({ exports: false })); - - // different output file - baseConfig.output.file = "dist-test/index.node.js"; - - // mark devdeps as external - baseConfig.external.push(...devDepNames); - - // Disable tree-shaking of test code. In rollup-plugin-node-resolve@5.0.0, rollup started respecting - // the "sideEffects" field in package.json. Since our package.json sets "sideEffects=false", this also - // applies to test code, which causes all tests to be removed by tree-shaking. - baseConfig.treeshake = false; - } else if (production) { - baseConfig.plugins.push(terser()); - } - - return baseConfig; -} - -export function browserConfig(test = false) { - const baseConfig = { - input: input, - output: { - file: "dist-browser/azure-core-client.js", - format: "umd", - name: "Azure.Core.Client", - sourcemap: true - }, - preserveSymlinks: false, - plugins: [ - sourcemaps(), - replace({ - delimiters: ["", ""], - values: { - // replace dynamic checks with if (false) since this is for - // browser only. Rollup's dead code elimination will remove - // any code guarded by if (isNode) { ... } - "if (isNode)": "if (false)" - } - }), - nodeResolve({ - mainFields: ["module", "browser"], - preferBuiltins: false - }), - cjs({ - namedExports: { - chai: ["assert"], - ...openTelemetryCommonJs() - } - }), - viz({ filename: "dist-browser/browser-stats.html", sourcemap: false }) - ] - }; - - if (test) { - // Entry points - test files under the `test` folder(common for both browser and node), browser specific test files - baseConfig.input = ["dist-esm/test/*.spec.js", "dist-esm/test/browser/*.spec.js"]; - baseConfig.plugins.unshift(multiEntry({ exports: false })); - baseConfig.output.file = "dist-test/index.browser.js"; - - baseConfig.onwarn = (warning) => { - if ( - warning.code === "CIRCULAR_DEPENDENCY" && - warning.importer.indexOf(path.normalize("node_modules/chai/lib") === 0) - ) { - // Chai contains circular references, but they are not fatal and can be ignored. - return; - } - - console.error(`(!) ${warning.message}`); - }; - - // Disable tree-shaking of test code. In rollup-plugin-node-resolve@5.0.0, rollup started respecting - // the "sideEffects" field in package.json. Since our package.json sets "sideEffects=false", this also - // applies to test code, which causes all tests to be removed by tree-shaking. - baseConfig.treeshake = false; - } - - return baseConfig; -} diff --git a/sdk/core/core-xml/rollup.config.js b/sdk/core/core-xml/rollup.config.js index 14652aa67ed8..5d7deee44c14 100644 --- a/sdk/core/core-xml/rollup.config.js +++ b/sdk/core/core-xml/rollup.config.js @@ -1,13 +1,3 @@ -import * as base from "./rollup.base.config"; +import { makeConfig } from "@azure/dev-tool/shared-config/rollup"; -const inputs = []; - -if (!process.env.ONLY_BROWSER) { - inputs.push(base.nodeConfig()); -} - -if (!process.env.ONLY_NODE) { - inputs.push(base.browserConfig()); -} - -export default inputs; +export default makeConfig(require("./package.json")); diff --git a/sdk/core/core-xml/rollup.test.config.js b/sdk/core/core-xml/rollup.test.config.js deleted file mode 100644 index fc843df2b5a3..000000000000 --- a/sdk/core/core-xml/rollup.test.config.js +++ /dev/null @@ -1,13 +0,0 @@ -import * as base from "./rollup.base.config"; - -const inputs = []; - -if (!process.env.ONLY_BROWSER) { - inputs.push(base.nodeConfig(true)); -} - -if (!process.env.ONLY_NODE) { - inputs.push(base.browserConfig(true)); -} - -export default inputs; diff --git a/sdk/core/logger/package.json b/sdk/core/logger/package.json index ebdd6711aa7f..cff74cdbc8e4 100644 --- a/sdk/core/logger/package.json +++ b/sdk/core/logger/package.json @@ -14,15 +14,15 @@ }, "scripts": { "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", - "build:es6": "tsc -p tsconfig.json", - "build:nodebrowser": "rollup -c 2>&1", - "build:test": "rollup -c rollup.test.config.js 2>&1", - "build": "npm run build:es6 && npm run build:nodebrowser && npm run extract-api", + "build:samples": "echo Obsolete", + "build:test": "tsc -p . && rollup -c 2>&1", + "build": "tsc -p . && rollup -c 2>&1 && api-extractor run --local --local", "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", - "clean": "rimraf dist dist-* types temp statistics.html coverage coverage-browser .nyc_output *.tgz *.log test*.xml TEST*.xml", + "clean": "rimraf dist dist-* temp types *.tgz *.log", + "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src", "execute:samples": "echo skipped", "extract-api": "tsc -p . && api-extractor run --local", - "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", "integration-test:node": "echo skipped", "integration-test": "npm run integration-test:node && npm run integration-test:browser", @@ -31,14 +31,12 @@ "pack": "npm pack 2>&1", "prebuild": "npm run clean", "pretest": "npm run build:test", - "test:browser": "npm run build:test && npm run unit-test:browser && npm run integration-test:browser", - "test:node": "npm run build:test && npm run unit-test:node && npm run integration-test:node", - "test": "npm run build:test && npm run unit-test && npm run integration-test", + "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser", + "test:node": "npm run clean && tsc -p . && npm run unit-test:node && npm run integration-test:node", + "test": "npm run clean && tsc -p . && npm run unit-test:node && rollup -c 2>&1 && npm run unit-test:browser && npm run integration-test", "unit-test:browser": "karma start --single-run", - "unit-test:node": "cross-env TS_NODE_FILES=true TS_NODE_COMPILER_OPTIONS=\"{\\\"module\\\": \\\"commonjs\\\"}\" mocha --require ts-node/register --require source-map-support/register --reporter ../../../common/tools/mocha-multi-reporter.js --full-trace --no-timeouts \"test/*.spec.ts\"", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "build:samples": "echo Skipped.", - "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src" + "unit-test:node": "mocha -r esm -r ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace --exclude \"test/**/browser/*.spec.ts\" \"test/**/*.spec.ts\"", + "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "types": "./types/logger.d.ts", "files": [ @@ -71,17 +69,13 @@ "tslib": "^2.2.0" }, "devDependencies": { + "@azure/dev-tool": "^1.0.0", "@azure/eslint-plugin-azure-sdk": "^3.0.0", "@microsoft/api-extractor": "7.7.11", - "@rollup/plugin-commonjs": "11.0.2", - "@rollup/plugin-multi-entry": "^3.0.0", - "@rollup/plugin-node-resolve": "^8.0.0", - "@rollup/plugin-replace": "^2.2.0", "@types/chai": "^4.1.6", "@types/mocha": "^7.0.2", "@types/node": "^12.0.0", "@types/sinon": "^9.0.4", - "assert": "^1.4.1", "chai": "^4.2.0", "cross-env": "^7.0.2", "delay": "^4.2.0", @@ -105,8 +99,6 @@ "puppeteer": "^3.3.0", "rimraf": "^3.0.0", "rollup": "^1.16.3", - "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-terser": "^5.1.1", "sinon": "^9.0.2", "ts-node": "^9.0.0", "typescript": "~4.2.0", diff --git a/sdk/core/logger/rollup.base.config.js b/sdk/core/logger/rollup.base.config.js deleted file mode 100644 index 22e4dd35af25..000000000000 --- a/sdk/core/logger/rollup.base.config.js +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -import nodeResolve from "@rollup/plugin-node-resolve"; -import path from "path"; -import multiEntry from "@rollup/plugin-multi-entry"; -import cjs from "@rollup/plugin-commonjs"; -import replace from "@rollup/plugin-replace"; -import { terser } from "rollup-plugin-terser"; -import sourcemaps from "rollup-plugin-sourcemaps"; - -const pkg = require("./package.json"); -const depNames = Object.keys(pkg.dependencies); -const devDepNames = Object.keys(pkg.devDependencies); -const input = "./dist-esm/src/index.js"; -const production = process.env.NODE_ENV === "production"; - -export function nodeConfig(test = false) { - const externalNodeBuiltins = ["util", "os"]; - const baseConfig = { - input: input, - external: depNames.concat(externalNodeBuiltins), - output: { file: "dist/index.js", format: "cjs", sourcemap: true }, - preserveSymlinks: false, - plugins: [ - sourcemaps(), - replace({ - delimiters: ["", ""], - // replace dynamic checks with if (true) since this is for node only. - // Allows rollup's dead code elimination to be more aggressive. - "if (isNode)": "if (true)" - }), - nodeResolve({ preferBuiltins: true, mainFields: ["module"] }), - cjs() - ] - }; - - if (test) { - // Entry points - test files under the `test` folder(common for both browser and node), node specific test files - baseConfig.input = ["dist-esm/test/*.spec.js", "dist-esm/test/node/*.spec.js"]; - baseConfig.plugins.unshift(multiEntry({ exports: false })); - - // different output file - baseConfig.output.file = "dist-test/logger.js"; - - // mark devdeps as external - baseConfig.external.push(...devDepNames); - - baseConfig.context = "null"; - - baseConfig.onwarn = (warning) => { - console.error(`(!) ${warning.message}`); - }; - - // Disable tree-shaking of test code. In rollup-plugin-node-resolve@5.0.0, rollup started respecting - // the "sideEffects" field in package.json. Since our package.json sets "sideEffects=false", this also - // applies to test code, which causes all tests to be removed by tree-shaking. - baseConfig.treeshake = false; - } else if (production) { - baseConfig.plugins.push(terser()); - } - - return baseConfig; -} - -export function browserConfig(test = false) { - const baseConfig = { - input: input, - external: ["ms-rest-js"], - output: { - file: "dist-browser/logger.js", - format: "umd", - name: "Azure.Logger", - sourcemap: true - }, - preserveSymlinks: false, - plugins: [ - sourcemaps(), - replace( - // ms-rest-js is externalized so users must include it prior to using this bundle. - { - delimiters: ["", ""], - // replace dynamic checks with if (false) since this is for - // browser only. Rollup's dead code elimination will remove - // any code guarded by if (isNode) { ... } - "if (isNode)": "if (false)" - } - ), - nodeResolve({ - mainFields: ["module", "browser"], - preferBuiltins: false - }), - cjs({ - namedExports: { - chai: ["assert"], - events: ["EventEmitter"], - assert: ["ok", "deepEqual", "equal", "fail", "deepStrictEqual", "notDeepEqual", "throws"] - } - }) - ] - }; - if (test) { - // Entry points - test files under the `test` folder(common for both browser and node), browser specific test files - baseConfig.input = ["dist-esm/test/*.spec.js", "dist-esm/test/browser/*.spec.js"]; - baseConfig.plugins.unshift(multiEntry({ exports: false })); - baseConfig.output.file = "dist-test/index.browser.js"; - baseConfig.context = "null"; - - baseConfig.onwarn = (warning) => { - if ( - warning.code === "CIRCULAR_DEPENDENCY" && - warning.importer.indexOf(path.normalize("node_modules/chai/lib") === 0) - ) { - // Chai contains circular references, but they are not fatal and can be ignored. - return; - } - - console.error(`(!) ${warning.message}`); - }; - - // Disable tree-shaking of test code. In rollup-plugin-node-resolve@5.0.0, rollup started respecting - // the "sideEffects" field in package.json. Since our package.json sets "sideEffects=false", this also - // applies to test code, which causes all tests to be removed by tree-shaking. - baseConfig.treeshake = false; - } else if (production) { - baseConfig.plugins.push(terser()); - } - - return baseConfig; -} diff --git a/sdk/core/logger/rollup.config.js b/sdk/core/logger/rollup.config.js index fd25a0257a1f..5d7deee44c14 100644 --- a/sdk/core/logger/rollup.config.js +++ b/sdk/core/logger/rollup.config.js @@ -1,17 +1,3 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. +import { makeConfig } from "@azure/dev-tool/shared-config/rollup"; -import * as base from "./rollup.base.config"; - -const inputs = []; - -if (!process.env.ONLY_BROWSER) { - inputs.push(base.nodeConfig()); -} - -// Disable this until we are ready to run rollup for the browser. -if (!process.env.ONLY_NODE) { - inputs.push(base.browserConfig()); -} - -export default inputs; +export default makeConfig(require("./package.json")); diff --git a/sdk/core/logger/rollup.test.config.js b/sdk/core/logger/rollup.test.config.js deleted file mode 100644 index ad98718cce46..000000000000 --- a/sdk/core/logger/rollup.test.config.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -import * as base from "./rollup.base.config"; - -export default [base.nodeConfig(true), base.browserConfig(true)]; diff --git a/sdk/core/logger/test/logger.spec.ts b/sdk/core/logger/test/logger.spec.ts index df0554bf8c83..091e5ed135ce 100644 --- a/sdk/core/logger/test/logger.spec.ts +++ b/sdk/core/logger/test/logger.spec.ts @@ -2,7 +2,7 @@ // Licensed under the MIT license. import * as Logger from "../src"; -import * as assert from "assert"; +import { assert } from "chai"; const testLogger = Logger.createClientLogger("test"); diff --git a/sdk/core/perf-tests/core-rest-pipeline/package.json b/sdk/core/perf-tests/core-rest-pipeline/package.json index 05096d5ba069..6fb37d2331f5 100644 --- a/sdk/core/perf-tests/core-rest-pipeline/package.json +++ b/sdk/core/perf-tests/core-rest-pipeline/package.json @@ -25,8 +25,8 @@ "scripts": { "perf-test:node": "ts-node test/index.spec.ts", "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", + "build:samples": "echo Obsolete", "build": "tsc -p .", - "build:samples": "echo skipped", "build:test": "echo skipped", "check-format": "prettier --list-different --config ../../../../.prettierrc.json --ignore-path ../../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", "clean": "rimraf dist dist-esm test-dist typings *.tgz *.log", diff --git a/sdk/template/template/package.json b/sdk/template/template/package.json index 10c809a0bd2e..17b9a75afe21 100644 --- a/sdk/template/template/package.json +++ b/sdk/template/template/package.json @@ -28,13 +28,10 @@ }, "scripts": { "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", - "build:browser": "tsc -p . && cross-env ONLY_BROWSER=true rollup -c 2>&1", - "build:node": "tsc -p . && cross-env ONLY_NODE=true rollup -c 2>&1", - "build:nodebrowser": "rollup -c 2>&1", - "build:samples": "echo Obsolete.", + "build:samples": "echo Obsolete", "build:test": "tsc -p . && rollup -c 2>&1", - "build:types": "downlevel-dts types/latest types/3.1", - "build": "tsc -p . && npm run build:nodebrowser && api-extractor run --local && npm run build:types", + "build:types": "downlevel-dts types/latest/ types/3.1/", + "build": "tsc -p . && rollup -c 2>&1 && api-extractor run --local && npm run build:types", "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", "clean": "rimraf dist dist-* temp types *.tgz *.log", "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src", @@ -49,11 +46,11 @@ "lint": "eslint package.json api-extractor.json src test --ext .ts", "pack": "npm pack 2>&1", "prebuild": "npm run clean", - "test:browser": "npm run build:test && npm run unit-test:browser && npm run integration-test:browser", - "test:node": "npm run build:test && npm run unit-test:node && npm run integration-test:node", - "test": "npm run build:test && npm run unit-test && npm run integration-test", + "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser", + "test:node": "npm run clean && tsc -p . && npm run unit-test:node && npm run integration-test:node", + "test": "npm run clean && tsc -p . && npm run unit-test:node && rollup -c 2>&1 && npm run unit-test:browser && npm run integration-test", "unit-test:browser": "karma start --single-run", - "unit-test:node": "mocha -r esm --require ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace \"test/{,!(browser)/**/}/*.spec.ts\"", + "unit-test:node": "mocha -r esm -r ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace --exclude \"test/**/browser/*.spec.ts\" \"test/**/*.spec.ts\"", "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "files": [