mirror of
https://github.com/nasa/openmct.git
synced 2024-12-18 20:57:53 +00:00
[build] Re-enable package lock (#7584)
* include package lock * migrate to npm ci * remove cache busting doc and replace with npm run clean --------- Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov> Co-authored-by: Andrew Henry <akhenry@gmail.com>
This commit is contained in:
parent
10eb749d32
commit
ceeb761d94
@ -1,4 +1,7 @@
|
|||||||
version: 2.1
|
version: 2.1
|
||||||
|
orbs:
|
||||||
|
node: circleci/node@5.2.0
|
||||||
|
browser-tools: circleci/browser-tools@1.3.0
|
||||||
executors:
|
executors:
|
||||||
pw-focal-development:
|
pw-focal-development:
|
||||||
docker:
|
docker:
|
||||||
@ -11,47 +14,17 @@ executors:
|
|||||||
machine:
|
machine:
|
||||||
image: ubuntu-2204:current
|
image: ubuntu-2204:current
|
||||||
docker_layer_caching: true
|
docker_layer_caching: true
|
||||||
parameters:
|
|
||||||
BUST_CACHE:
|
|
||||||
description: "Set this with the CircleCI UI Trigger Workflow button (boolean = true) to bust the cache!"
|
|
||||||
default: false
|
|
||||||
type: boolean
|
|
||||||
commands:
|
commands:
|
||||||
build_and_install:
|
build_and_install:
|
||||||
description: "All steps used to build and install. Will use cache if found"
|
description: "All steps used to build and install."
|
||||||
parameters:
|
parameters:
|
||||||
node-version:
|
node-version:
|
||||||
type: string
|
type: string
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
- restore_cache_cmd:
|
|
||||||
node-version: << parameters.node-version >>
|
|
||||||
- node/install:
|
- node/install:
|
||||||
node-version: << parameters.node-version >>
|
node-version: << parameters.node-version >>
|
||||||
- run: npm install --no-audit --progress=false
|
- node/install-packages
|
||||||
restore_cache_cmd:
|
|
||||||
description: "Custom command for restoring cache with the ability to bust cache. When BUST_CACHE is set to true, jobs will not restore cache"
|
|
||||||
parameters:
|
|
||||||
node-version:
|
|
||||||
type: string
|
|
||||||
steps:
|
|
||||||
- when:
|
|
||||||
condition:
|
|
||||||
equal: [false, << pipeline.parameters.BUST_CACHE >>]
|
|
||||||
steps:
|
|
||||||
- restore_cache:
|
|
||||||
key: deps--{{ arch }}--{{ .Branch }}--<< parameters.node-version >>--{{ checksum "package.json" }}-{{ checksum ".circleci/config.yml" }}
|
|
||||||
save_cache_cmd:
|
|
||||||
description: "Custom command for saving cache."
|
|
||||||
parameters:
|
|
||||||
node-version:
|
|
||||||
type: string
|
|
||||||
steps:
|
|
||||||
- save_cache:
|
|
||||||
key: deps--{{ arch }}--{{ .Branch }}--<< parameters.node-version >>--{{ checksum "package.json" }}-{{ checksum ".circleci/config.yml" }}
|
|
||||||
paths:
|
|
||||||
- ~/.npm
|
|
||||||
- node_modules
|
|
||||||
generate_and_store_version_and_filesystem_artifacts:
|
generate_and_store_version_and_filesystem_artifacts:
|
||||||
description: "Track important packages and files"
|
description: "Track important packages and files"
|
||||||
steps:
|
steps:
|
||||||
@ -71,9 +44,6 @@ commands:
|
|||||||
steps:
|
steps:
|
||||||
- run: npm run cov:e2e:report || true
|
- run: npm run cov:e2e:report || true
|
||||||
- run: npm run cov:e2e:<<parameters.suite>>:publish
|
- run: npm run cov:e2e:<<parameters.suite>>:publish
|
||||||
orbs:
|
|
||||||
node: circleci/node@5.1.0
|
|
||||||
browser-tools: circleci/browser-tools@1.3.0
|
|
||||||
jobs:
|
jobs:
|
||||||
npm-audit:
|
npm-audit:
|
||||||
parameters:
|
parameters:
|
||||||
@ -111,8 +81,6 @@ jobs:
|
|||||||
TESTFILES=$(circleci tests glob "src/**/*Spec.js")
|
TESTFILES=$(circleci tests glob "src/**/*Spec.js")
|
||||||
echo "$TESTFILES" | circleci tests run --command="xargs npm run test" --verbose
|
echo "$TESTFILES" | circleci tests run --command="xargs npm run test" --verbose
|
||||||
- run: npm run cov:unit:publish
|
- run: npm run cov:unit:publish
|
||||||
- save_cache_cmd:
|
|
||||||
node-version: <<parameters.node-version>>
|
|
||||||
- store_test_results:
|
- store_test_results:
|
||||||
path: dist/reports/tests/
|
path: dist/reports/tests/
|
||||||
- store_artifacts:
|
- store_artifacts:
|
||||||
|
1
.github/PULL_REQUEST_TEMPLATE.md
vendored
1
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -17,7 +17,6 @@ Closes <!--- Insert Issue Number(s) this PR addresses. Start by typing # will op
|
|||||||
* [ ] Has this been smoke tested?
|
* [ ] Has this been smoke tested?
|
||||||
* [ ] Have you associated this PR with a `type:` label? Note: this is not necessarily the same as the original issue.
|
* [ ] Have you associated this PR with a `type:` label? Note: this is not necessarily the same as the original issue.
|
||||||
* [ ] Have you associated a milestone with this PR? Note: leave blank if unsure.
|
* [ ] Have you associated a milestone with this PR? Note: leave blank if unsure.
|
||||||
* [ ] Is this a breaking change to be called out in the release notes?
|
|
||||||
* [ ] Testing instructions included in associated issue OR is this a dependency/testcase change?
|
* [ ] Testing instructions included in associated issue OR is this a dependency/testcase change?
|
||||||
|
|
||||||
### Reviewer Checklist
|
### Reviewer Checklist
|
||||||
|
2
.github/workflows/e2e-couchdb.yml
vendored
2
.github/workflows/e2e-couchdb.yml
vendored
@ -28,7 +28,7 @@ jobs:
|
|||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ runner.os }}-node-
|
${{ runner.os }}-node-
|
||||||
|
|
||||||
- run: npm install --cache ~/.npm --no-audit --progress=false
|
- run: npm ci --no-audit --progress=false
|
||||||
|
|
||||||
- name: Login to DockerHub
|
- name: Login to DockerHub
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
|
2
.github/workflows/e2e-flakefinder.yml
vendored
2
.github/workflows/e2e-flakefinder.yml
vendored
@ -31,7 +31,7 @@ jobs:
|
|||||||
${{ runner.os }}-node-
|
${{ runner.os }}-node-
|
||||||
|
|
||||||
- run: npx playwright@1.39.0 install
|
- run: npx playwright@1.39.0 install
|
||||||
- run: npm install --cache ~/.npm --no-audit --progress=false
|
- run: npm ci --no-audit --progress=false
|
||||||
|
|
||||||
- name: Run E2E Tests (Repeated 10 Times)
|
- name: Run E2E Tests (Repeated 10 Times)
|
||||||
run: npm run test:e2e:stable -- --retries=0 --repeat-each=10 --max-failures=50
|
run: npm run test:e2e:stable -- --retries=0 --repeat-each=10 --max-failures=50
|
||||||
|
2
.github/workflows/e2e-perf.yml
vendored
2
.github/workflows/e2e-perf.yml
vendored
@ -29,7 +29,7 @@ jobs:
|
|||||||
${{ runner.os }}-node-
|
${{ runner.os }}-node-
|
||||||
|
|
||||||
- run: npx playwright@1.39.0 install
|
- run: npx playwright@1.39.0 install
|
||||||
- run: npm install --cache ~/.npm --no-audit --progress=false
|
- run: npm ci --no-audit --progress=false
|
||||||
- run: npm run test:perf:localhost
|
- run: npm run test:perf:localhost
|
||||||
- run: npm run test:perf:contract
|
- run: npm run test:perf:contract
|
||||||
- run: npm run test:perf:memory
|
- run: npm run test:perf:memory
|
||||||
|
2
.github/workflows/e2e-pr.yml
vendored
2
.github/workflows/e2e-pr.yml
vendored
@ -35,7 +35,7 @@ jobs:
|
|||||||
|
|
||||||
- run: npx playwright@1.39.0 install
|
- run: npx playwright@1.39.0 install
|
||||||
- run: npx playwright install chrome-beta
|
- run: npx playwright install chrome-beta
|
||||||
- run: npm install --cache ~/.npm --no-audit --progress=false
|
- run: npm ci --no-audit --progress=false
|
||||||
- run: npm run test:e2e:full -- --max-failures=40
|
- run: npm run test:e2e:full -- --max-failures=40
|
||||||
- run: npm run cov:e2e:report || true
|
- run: npm run cov:e2e:report || true
|
||||||
- shell: bash
|
- shell: bash
|
||||||
|
4
.github/workflows/npm-prerelease.yml
vendored
4
.github/workflows/npm-prerelease.yml
vendored
@ -15,7 +15,7 @@ jobs:
|
|||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: lts/hydrogen
|
node-version: lts/hydrogen
|
||||||
- run: npm install
|
- run: npm ci
|
||||||
- run: |
|
- run: |
|
||||||
echo "//registry.npmjs.org/:_authToken=$NODE_AUTH_TOKEN" >> ~/.npmrc
|
echo "//registry.npmjs.org/:_authToken=$NODE_AUTH_TOKEN" >> ~/.npmrc
|
||||||
npm whoami
|
npm whoami
|
||||||
@ -31,7 +31,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
node-version: lts/hydrogen
|
node-version: lts/hydrogen
|
||||||
registry-url: https://registry.npmjs.org/
|
registry-url: https://registry.npmjs.org/
|
||||||
- run: npm install
|
- run: npm ci
|
||||||
- run: npm publish --access=public --tag unstable
|
- run: npm publish --access=public --tag unstable
|
||||||
env:
|
env:
|
||||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
2
.github/workflows/pr-platform.yml
vendored
2
.github/workflows/pr-platform.yml
vendored
@ -45,7 +45,7 @@ jobs:
|
|||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ runner.os }}-${{ matrix.node_version }}-
|
${{ runner.os }}-${{ matrix.node_version }}-
|
||||||
|
|
||||||
- run: npm install --cache ~/.npm --no-audit --progress=false
|
- run: npm ci --no-audit --progress=false
|
||||||
|
|
||||||
- run: npm test
|
- run: npm test
|
||||||
|
|
||||||
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -47,6 +47,3 @@ index.html.bak
|
|||||||
.nyc_output
|
.nyc_output
|
||||||
coverage
|
coverage
|
||||||
codecov
|
codecov
|
||||||
|
|
||||||
# :(
|
|
||||||
package-lock.json
|
|
||||||
|
3
.npmrc
3
.npmrc
@ -2,6 +2,3 @@ loglevel=warn
|
|||||||
|
|
||||||
#Prevent folks from ignoring an important error when building from source
|
#Prevent folks from ignoring an important error when building from source
|
||||||
engine-strict=true
|
engine-strict=true
|
||||||
|
|
||||||
# Dont include lockfile
|
|
||||||
package-lock=false
|
|
14
TESTING.md
14
TESTING.md
@ -91,12 +91,14 @@ There are a few reasons that your GitHub PR could be failing beyond simple faile
|
|||||||
### Local=Pass and CI=Fail
|
### Local=Pass and CI=Fail
|
||||||
Although rare, it is possible that your test can pass locally but fail in CI.
|
Although rare, it is possible that your test can pass locally but fail in CI.
|
||||||
|
|
||||||
#### Busting Cache
|
### Reset your workspace
|
||||||
In certain circumstances, the CircleCI cache can become stale. In order to bust the cache, we've implemented a runtime boolean parameter in Circle CI creatively name BUST_CACHE. To execute:
|
It's possible that you're running with dependencies or a local environment which is out of sync with the branch you're working on. Make sure to execute the following:
|
||||||
1. Navigate to the branch in Circle CI believed to have stale cache.
|
|
||||||
1. Click on the 'Trigger Pipeline' button.
|
```sh
|
||||||
1. Add Parameter -> Parameter Type = boolean , Name = BUST_CACHE ,Value = true
|
nvm use
|
||||||
1. Click 'Trigger Pipeline'
|
npm run clean
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
#### Run tests in the same container as CI
|
#### Run tests in the same container as CI
|
||||||
|
|
||||||
|
12284
package-lock.json
generated
Normal file
12284
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -91,7 +91,7 @@
|
|||||||
"webpack-merge": "5.10.0"
|
"webpack-merge": "5.10.0"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"clean": "rm -rf ./dist ./node_modules ./package-lock.json ./coverage ./html-test-results ./test-results ./.nyc_output ",
|
"clean": "rm -rf ./dist ./node_modules ./coverage ./html-test-results ./test-results ./.nyc_output ",
|
||||||
"start": "npx webpack serve --config ./.webpack/webpack.dev.js",
|
"start": "npx webpack serve --config ./.webpack/webpack.dev.js",
|
||||||
"start:prod": "npx webpack serve --config ./.webpack/webpack.prod.js",
|
"start:prod": "npx webpack serve --config ./.webpack/webpack.prod.js",
|
||||||
"start:coverage": "npx webpack serve --config ./.webpack/webpack.coverage.js",
|
"start:coverage": "npx webpack serve --config ./.webpack/webpack.coverage.js",
|
||||||
|
@ -23,27 +23,46 @@
|
|||||||
import EventEmitter from 'EventEmitter';
|
import EventEmitter from 'EventEmitter';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef {Object} Selectable
|
||||||
|
* @property {HTMLElement} element The HTML element that is selectable
|
||||||
|
* @property {Object} context The context of the selectable, which may include a DomainObject
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef {import('../../openmct').OpenMCT} OpenMCT
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Manages selection state for Open MCT
|
* Manages selection state for Open MCT
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
export default class Selection extends EventEmitter {
|
export default class Selection extends EventEmitter {
|
||||||
|
/**
|
||||||
|
* @param {OpenMCT} openmct The Open MCT instance
|
||||||
|
*/
|
||||||
constructor(openmct) {
|
constructor(openmct) {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
|
/** @type {OpenMCT} */
|
||||||
this.openmct = openmct;
|
this.openmct = openmct;
|
||||||
|
/** @type {Selectable[]} */
|
||||||
this.selected = [];
|
this.selected = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the selected object.
|
* Gets the selected object.
|
||||||
|
* @returns {Selectable[]} The currently selected objects
|
||||||
* @public
|
* @public
|
||||||
*/
|
*/
|
||||||
get() {
|
get() {
|
||||||
return this.selected;
|
return this.selected;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Selects the selectable object and emits the 'change' event.
|
* Selects the selectable object and emits the 'change' event.
|
||||||
*
|
*
|
||||||
|
* @param {Selectable|Selectable[]} selectable An object or array of objects with element and context properties
|
||||||
* @param {object} selectable an object with element and context properties
|
* @param {object} selectable an object with element and context properties
|
||||||
* @param {Boolean} isMultiSelectEvent flag indication shift key is pressed or not
|
* @param {Boolean} isMultiSelectEvent flag indication shift key is pressed or not
|
||||||
* @private
|
* @private
|
||||||
|
Loading…
Reference in New Issue
Block a user