Skip to content

Commit

Permalink
build: get rid of lerna, use yarn and release-script to handle vers…
Browse files Browse the repository at this point in the history
…ioning (zwave-js#4071)
  • Loading branch information
AlCalzone committed Mar 2, 2022
1 parent 9edf81c commit 61305bb
Show file tree
Hide file tree
Showing 20 changed files with 895 additions and 3,025 deletions.
2 changes: 1 addition & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ indent_style = tab
indent_size = 4

# space indentation for some specific files
[{package.json,lerna.json}]
[package.json]
indent_style = space
indent_size = 2

Expand Down
29 changes: 14 additions & 15 deletions .github/actions/zwave-js-bot/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,35 +36,34 @@ async function publishPr() {
await exec.exec("git", ["config", "user.email", "[email protected]"]);
await exec.exec("git", ["config", "user.name", "Z-Wave JS Bot"]);

// Configure npm
await exec.exec("npm", [
// Configure npm login
await exec.exec("yarn", [
"config",
"set",
`//registry.npmjs.org/:_authToken=${npmToken}`,
`npmRegistries["//registry.npmjs.org/"].npmAuthToken`,
npmToken,
]);

// Figure out the next version
newVersion = `${semver.inc(
require(`${process.env.GITHUB_WORKSPACE}/lerna.json`).version,
require(`${process.env.GITHUB_WORKSPACE}/package.json`).version,
"prerelease",
)}-pr-${pr}-${pull.merge_commit_sha.slice(0, 7)}`;

// Bump versions
await exec.exec(
"lerna",
`version ${newVersion} --exact --allow-branch * --ignore-scripts --no-commit-hooks --no-push --yes`.split(
"yarn",
`for-changed version ${newVersion} --deferred`.split(" "),
);
await exec.exec("yarn", ["version", "apply", "--all"]);

// and release changed packages
await exec.exec(
"yarn",
`workspaces foreach -vti --no-private npm publish --tolerate-republish --tag next`.split(
" ",
),
);

// and release
await exec.exec("lerna", [
"publish",
"from-package",
"--yes",
"--dist-tag",
"next",
]);
success = true;
} catch (e) {
console.error(e.message);
Expand Down
23 changes: 13 additions & 10 deletions .github/workflows/nightly-config-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,15 +60,15 @@ jobs:
yarn install --immutable
# ===============================
# Double-check changes with lerna
# Double-check changes with yarn
# ===============================
# Verify that only @zwave-js/config and zwave-js are changed
LERNA_CHANGED=$(lerna changed)
if [[ $(echo -e "@zwave-js/config\nzwave-js") != "$LERNA_CHANGED" ]]; then
echo "❌ Lerna detected unexpected package changes, aborting..."
CHANGED_PACKAGES=$(SINCE=$LAST_TAG yarn ls-changed)
if [[ $(echo -e "@zwave-js/config\nzwave-js") != "$CHANGED_PACKAGES" ]]; then
echo "❌ Yarn detected unexpected package changes, aborting..."
echo "These packages are changed:"
echo "$LERNA_CHANGED"
echo "$CHANGED_PACKAGES"
exit 0
fi
Expand All @@ -77,7 +77,7 @@ jobs:
# ===============================
# Create a clean build
lerna run build
yarn build
# Lint config files
yarn run lint:config
Expand All @@ -87,8 +87,6 @@ jobs:
# ===============================
cd packages/config
npm config set //registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}
npm whoami
# Figure out next version
cat > ./script.js << 'EOF'
Expand All @@ -112,5 +110,10 @@ jobs:
VERSION=$(node script.js)
echo "Next version is $VERSION"
npm version "$VERSION" --ignore-scripts --no-git-tag-version
npm publish --tag nightly
cd ../..
yarn config set npmAuthToken "${{ secrets.NPM_TOKEN }}"
yarn npm whoami
yarn workspace "@zwave-js/config" version "$VERSION" --deferred
yarn version apply --all
yarn workspace "@zwave-js/config" -vi npm publish --tag nightly
10 changes: 5 additions & 5 deletions .github/workflows/test-and-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ jobs:
run: yarn install --immutable

- name: Compile TypeScript code
run: lerna run build
run: yarn build

- name: Run linters
run: yarn run lint
Expand Down Expand Up @@ -101,7 +101,7 @@ jobs:
run: yarn install --immutable

- name: Compile TypeScript code
run: lerna run build
run: yarn build

- name: Lint config files
run: yarn run lint:config
Expand Down Expand Up @@ -242,9 +242,9 @@ jobs:
env:
TAG: ${{ steps.extract_release.outputs.TAG }}
run: |
npm config set //registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}
npm whoami
lerna publish from-package --yes $TAG
yarn config set npmAuthToken "${{ secrets.NPM_TOKEN }}"
yarn npm whoami
yarn workspaces foreach -vti --no-private npm publish --tolerate-republish $TAG
- name: Create Github Release
uses: actions/create-release@v1
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/to-log-entry-overview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
run: yarn install --immutable

- name: Compile TypeScript code
run: lerna run build
run: yarn build

- name: Update overview
uses: ./.github/actions/toLogEntry
Expand Down
3 changes: 0 additions & 3 deletions .releaseconfig.json

This file was deleted.

8 changes: 8 additions & 0 deletions .yarn/plugins/@yarnpkg/plugin-changed.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/* eslint-disable */
module.exports = {
name: "@yarnpkg/plugin-changed",
factory: function (require) {
var plugin;(()=>{"use strict";var e={d:(t,o)=>{for(var n in o)e.o(o,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:o[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{default:()=>f});const o=require("@yarnpkg/cli"),n=require("clipanion"),r=require("@yarnpkg/core");function a(e){const{project:t}=e,o=new Set;return function e({manifest:n}){for(const a of r.Manifest.hardDependencies)for(const r of n.getForScope(a).values()){const n=t.tryWorkspaceByDescriptor(r);n&&!o.has(n)&&(o.add(n),e(n))}}(e),[...o]}function s(e){const t=new Set;for(const o of e.project.workspaces){a(o).some(t=>r.structUtils.areLocatorsEqual(t.locator,e.locator))&&t.add(o)}return[...t]}var i=function(e,t,o,n){var r,a=arguments.length,s=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,n);else for(var i=e.length-1;i>=0;i--)(r=e[i])&&(s=(a<3?r(s):a>3?r(t,o,s):r(t,o))||s);return a>3&&s&&Object.defineProperty(t,o,s),s};class c extends o.BaseCommand{async listWorkspaces(e){const{stdout:t}=await r.execUtils.execvp("git",["diff","--name-only",...this.gitRange?[this.gitRange]:[]],{cwd:e.cwd,strict:!0}),o=function(e,t){const o=new Set;for(const n of e.workspaces){if(t.some(e=>e.startsWith(n.relativeCwd))&&!o.has(n)){o.add(n);for(const e of s(n))o.add(e)}}return[...o]}(e,t.split(/\r?\n/)),n=this.include||[],a=this.exclude||[];return o.filter(e=>{const t=r.structUtils.stringifyIdent(e.locator);if(t){if(n.length&&!n.includes(t))return!1;if(a.length&&a.includes(t))return!1}return!0})}}i([n.Command.String("--git-range")],c.prototype,"gitRange",void 0),i([n.Command.Array("--include")],c.prototype,"include",void 0),i([n.Command.Array("--exclude")],c.prototype,"exclude",void 0);var d=function(e,t,o,n){var r,a=arguments.length,s=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,n);else for(var i=e.length-1;i>=0;i--)(r=e[i])&&(s=(a<3?r(s):a>3?r(t,o,s):r(t,o))||s);return a>3&&s&&Object.defineProperty(t,o,s),s};class l extends c{constructor(){super(...arguments),this.json=!1}async execute(){const e=await r.Configuration.find(this.context.cwd,this.context.plugins),{project:t,workspace:n}=await r.Project.find(e,this.context.cwd);if(!n)throw new o.WorkspaceRequiredError(t.cwd,this.context.cwd);return(await r.StreamReport.start({configuration:e,json:this.json,stdout:this.context.stdout},async e=>{const o=await this.listWorkspaces(t);for(const t of o)e.reportInfo(null,t.relativeCwd),e.reportJson({name:t.manifest.name?r.structUtils.stringifyIdent(t.manifest.name):null,location:t.relativeCwd})})).exitCode()}}l.usage=n.Command.Usage({description:"List changed workspaces and their dependents",details:"\n If the `--json` flag is set the output will follow a JSON-stream output also known as NDJSON (https://github.com/ndjson/ndjson-spec).\n ",examples:[["Find changed files within a Git range","yarn changed list --git-range 93a9ed8..4ef2c61"],["Include or exclude workspaces","yarn changed list --include @foo/a --exclude @foo/b"]]}),d([n.Command.Boolean("--json")],l.prototype,"json",void 0),d([n.Command.Path("changed","list")],l.prototype,"execute",null);var p=function(e,t,o,n){var r,a=arguments.length,s=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,n);else for(var i=e.length-1;i>=0;i--)(r=e[i])&&(s=(a<3?r(s):a>3?r(t,o,s):r(t,o))||s);return a>3&&s&&Object.defineProperty(t,o,s),s};class u extends c{constructor(){super(...arguments),this.args=[],this.verbose=!1,this.parallel=!1,this.interlaced=!1,this.topological=!1}async execute(){const e=await r.Configuration.find(this.context.cwd,this.context.plugins),{project:t,workspace:n}=await r.Project.find(e,this.context.cwd);if(!n)throw new o.WorkspaceRequiredError(t.cwd,this.context.cwd);const a=await this.listWorkspaces(t);if(!a.length){return(await r.StreamReport.start({configuration:e,stdout:this.context.stdout},async e=>{e.reportInfo(null,"No workspaces changed")})).exitCode()}return this.cli.run(["workspaces","foreach",...a.reduce((e,t)=>[...e,"--include",r.structUtils.stringifyIdent(t.locator)],[]),...this.verbose?["--verbose"]:[],...this.parallel?["--parallel"]:[],...this.interlaced?["--interlaced"]:[],...this.topological?["--topological"]:[],...this.jobs?["--jobs",""+this.jobs]:[],this.commandName,...this.args],{cwd:t.cwd})}}u.usage=n.Command.Usage({description:"Run a command on changed workspaces and their dependents",details:"\n This command will run a given sub-command on changed workspaces and workspaces depends on them.\n\n Check the documentation for `yarn workspace foreach` for more details.\n ",examples:[["Run build scripts on changed workspaces","yarn changed foreach run build"],["Find changed files within a Git range","yarn changed foreach --git-range 93a9ed8..4ef2c61 run build"]]}),p([n.Command.String()],u.prototype,"commandName",void 0),p([n.Command.Proxy()],u.prototype,"args",void 0),p([n.Command.Boolean("-v,--verbose")],u.prototype,"verbose",void 0),p([n.Command.Boolean("-p,--parallel")],u.prototype,"parallel",void 0),p([n.Command.Boolean("-i,--interlaced")],u.prototype,"interlaced",void 0),p([n.Command.Boolean("-t,--topological")],u.prototype,"topological",void 0),p([n.Command.String("-j,--jobs")],u.prototype,"jobs",void 0),p([n.Command.Path("changed","foreach")],u.prototype,"execute",null);const f={commands:[l,u]};plugin=t})();
return plugin;
}
};
550 changes: 550 additions & 0 deletions .yarn/plugins/@yarnpkg/plugin-version.cjs

Large diffs are not rendered by default.

8 changes: 6 additions & 2 deletions .yarnrc.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
enableGlobalCache: true

nodeLinker: pnpm

plugins:
- path: .yarn/plugins/@yarnpkg/plugin-typescript.cjs
spec: "@yarnpkg/plugin-typescript"
- path: .yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs
spec: "@yarnpkg/plugin-workspace-tools"
- path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
spec: "@yarnpkg/plugin-interactive-tools"
- path: .yarn/plugins/@yarnpkg/plugin-changed.cjs
spec: "https://github.com/Dcard/yarn-plugins/releases/download/v0.7.2/plugin-changed.js"
- path: .yarn/plugins/@yarnpkg/plugin-version.cjs
spec: "@yarnpkg/plugin-version"

preferInteractive: true

yarnPath: .yarn/releases/yarn-3.1.1.cjs

nodeLinker: pnpm
10 changes: 0 additions & 10 deletions docs/development/installing-from-github.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,6 @@ If you need to test changes from GitHub, e.g. a branch that fixes an issue you h
}
```
And execute `yarn` in your repo to set up the links.
1. If your repo is using `npm` run this in the `node-zwave-js` repo:
```bash
lerna exec -- npm link
```
And this in your repo (for every package you use directly:)
```bash
npm link zwave-js
npm link @zwave-js/config
# ... others
```
1. (Re)start your application
1. If you're planning to work on `zwave-js`, run `yarn run watch` to continuously rebuild the changes
1. Don't forget to remove the `"resolutions"` field and run `yarn` again when you're done testing.
5 changes: 1 addition & 4 deletions docs/development/intro.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Development introduction {docsify-ignore-all}

## Help, I know nothing about `npm`, `yarn`, `lerna` and whatever...
## Help, I know nothing about `npm`, `yarn` and whatever...

_Alright, here's a short introduction if you're new to this stuff. If you know the basics, feel free to [skip forward](`#Prerequisites`)._

Expand All @@ -12,9 +12,6 @@ _Alright, here's a short introduction if you're new to this stuff. If you know t
`yarn` has a [bunch of commands](https://classic.yarnpkg.com/en/docs/usage) but you'll likely only need to use `yarn` (short for `yarn install`) to install all dependencies. **Don't** install missing dependencies one by one, **don't** install them globally.
`yarn` can also run package scripts for you, which we use extensively, e.g. `yarn run build` to compile TypeScript into JavaScript. You'll find most of the scripts in `package.json` under `"scripts"`.

[`lerna`](https://github.com/lerna/lerna) is a tool to manage monorepos (multiple dependent packages in a single repo) that works hand in hand with `yarn`. Since it allows running package scripts of sub-packages, we use it for some of our workflows.
To use `lerna`, you need to install it globally with `npm i -g lerna`. If you prefer not to, you can alternatively just prefix the commands with `yarn`, e.g. `yarn lerna run <scriptname>`.

## Online editor

It is now possible to develop on Gitpod, directly in your browser and skip the lengthy setup process.
Expand Down
19 changes: 9 additions & 10 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"name": "@zwave-js/repo",
"version": "8.10.1",
"private": true,
"description": "Z-Wave driver written entirely in JavaScript/TypeScript",
"keywords": [],
Expand Down Expand Up @@ -32,7 +33,6 @@
"@actions/github": "^5.0.0",
"@alcalzone/jsonl-db": "^2.5.1",
"@alcalzone/release-script": "~3.5.2",
"@alcalzone/release-script-plugin-lerna": "~3.5.0",
"@babel/core": "^7.17.5",
"@babel/plugin-proposal-class-properties": "*",
"@babel/plugin-proposal-decorators": "^7.17.2",
Expand Down Expand Up @@ -70,7 +70,6 @@
"husky": "^7.0.4",
"jest": "^26.6.3",
"jest-extended": "^0.11.5",
"lerna": "^4.0.0",
"prettier": "^2.5.1",
"prettier-plugin-organize-imports": "^2.3.4",
"reflect-metadata": "^0.1.13",
Expand All @@ -80,11 +79,9 @@
"zwave-js": "workspace:*"
},
"scripts": {
"prebuild": "yarn workspace zwave-js run b prebuild",
"build": "tsc -b packages/!(zwave-js)/tsconfig.build.json && yarn prebuild && tsc -b packages/zwave-js/tsconfig.build.json",
"watch": "yarn run build --watch",
"deprecated": "node -p '\\\"\\\\n \\\\n \\\\033[31;1;4mThe \\\\\"build:full\\\\\" script has been deprecated. Use \\\\\"build\\\\\" instead!\\\\033[0m\\\\n \\\\n\\\"'",
"build:full": "yarn run deprecated && yarn run build",
"foreach": "yarn workspaces foreach -pvi --exclude @zwave-js/repo",
"build": "yarn foreach -t run build",
"watch": "yarn foreach -t --exclude zwave-js run build && yarn workspace zwave-js run watch",
"test:reset": "jest --clear-cache",
"test:ts": "jest",
"test:ci": "yarn run test:ts --runInBand",
Expand All @@ -94,9 +91,9 @@
"coverage:ci": "yarn run test:ci --collect-coverage",
"show-coverage": "yarn run coverage && start ./coverage/index.html",
"lint:ts": "eslint --ext .ts \"packages/*/src/**/*.ts\"",
"lint:config": "lerna run lint_config",
"lint:config": "yarn workspace @zwave-js/config run lint_config",
"lint:configjson": "prettier -c \"packages/config/config/**/*.json\"",
"lint:zwave": "lerna run lint_zwave",
"lint:zwave": "yarn foreach run lint_zwave",
"lint": "yarn run lint:ts && yarn run lint:configjson",
"implemented_ccs": "yarn ts packages/maintenance/src/implementedCCs.ts",
"gh-cc-table": "yarn run implemented_ccs --flavor=github --only-incomplete",
Expand All @@ -112,7 +109,9 @@
"test:perf": "yarn ts test/valuedb-perf.ts",
"test:firmware": "yarn ts test/firmware-extraction.ts",
"ts": "node -r esbuild-register",
"nvmedit": "yarn ts packages/nvmedit/src/cli.ts"
"nvmedit": "yarn ts packages/nvmedit/src/cli.ts",
"ls-changed": "yarn changed list --exclude \"@zwave-js/repo\" --git-range=$(git describe --abbrev=0) --json | cut -d'\"' -f4",
"for-changed": "yarn changed foreach --exclude \"@zwave-js/repo\" --git-range=$(git describe --abbrev=0)"
},
"readme": "README.md",
"config": {
Expand Down
6 changes: 3 additions & 3 deletions packages/config/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@
"ts": "node -r esbuild-register"
},
"dependencies": {
"@zwave-js/core": "8.11.7",
"@zwave-js/shared": "8.11.3",
"@zwave-js/core": "workspace:*",
"@zwave-js/shared": "workspace:*",
"alcalzone-shared": "^4.0.1",
"ansi-colors": "^4.1.1",
"fs-extra": "^10.0.1",
Expand All @@ -60,7 +60,7 @@
"@types/semver": "^7.3.9",
"@types/xml2json": "^0.11.4",
"@types/yargs": "^17.0.8",
"@zwave-js/maintenance": "8.11.7",
"@zwave-js/maintenance": "workspace:*",
"axios": "^0.26.0",
"comment-json": "^4.2.2",
"esbuild": "*",
Expand Down
2 changes: 1 addition & 1 deletion packages/core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
},
"dependencies": {
"@alcalzone/jsonl-db": "^2.5.1",
"@zwave-js/shared": "8.11.3",
"@zwave-js/shared": "workspace:*",
"@zwave-js/winston-daily-rotate-file": "^4.5.6-1",
"alcalzone-shared": "^4.0.1",
"ansi-colors": "^4.1.1",
Expand Down
4 changes: 2 additions & 2 deletions packages/maintenance/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@
"@types/node": "^15.12.5",
"@types/prettier": "^2",
"@types/yargs": "^17.0.8",
"@zwave-js/core": "8.11.7",
"@zwave-js/shared": "8.11.3",
"@zwave-js/core": "workspace:*",
"@zwave-js/shared": "workspace:*",
"ansi-colors": "^4.1.1",
"clipboardy": "^2.3.0",
"esbuild": "*",
Expand Down
4 changes: 2 additions & 2 deletions packages/nvmedit/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@
"node": ">=v12.22.2"
},
"dependencies": {
"@zwave-js/core": "8.11.7",
"@zwave-js/shared": "8.11.3",
"@zwave-js/core": "workspace:*",
"@zwave-js/shared": "workspace:*",
"alcalzone-shared": "^4.0.1",
"fs-extra": "^10.0.1",
"reflect-metadata": "^0.1.13",
Expand Down
6 changes: 3 additions & 3 deletions packages/serial/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@
},
"dependencies": {
"@sentry/node": "^6.18.1",
"@zwave-js/core": "8.11.7",
"@zwave-js/shared": "8.11.3",
"@zwave-js/core": "workspace:*",
"@zwave-js/shared": "workspace:*",
"alcalzone-shared": "^4.0.1",
"serialport": "^9.2.8",
"winston": "^3.6.0"
Expand All @@ -48,7 +48,7 @@
"@types/jest": "^26.0.24",
"@types/node": "^15.12.5",
"@types/serialport": "^8.0.2",
"@zwave-js/testing": "8.11.7",
"@zwave-js/testing": "workspace:*",
"ansi-colors": "^4.1.1",
"esbuild": "*",
"esbuild-register": "^3.3.2",
Expand Down
2 changes: 1 addition & 1 deletion packages/testing/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
"@types/jest": "^26.0.24",
"@types/node": "^15.12.5",
"@types/triple-beam": "^1.3.2",
"@zwave-js/core": "8.11.7",
"@zwave-js/core": "workspace:*",
"ansi-colors": "^4.1.1",
"esbuild": "*",
"esbuild-register": "^3.3.2",
Expand Down
14 changes: 7 additions & 7 deletions packages/zwave-js/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,11 @@
"@alcalzone/pak": "^0.8.0",
"@sentry/integrations": "^6.18.1",
"@sentry/node": "^6.18.1",
"@zwave-js/config": "8.11.7",
"@zwave-js/core": "8.11.7",
"@zwave-js/nvmedit": "8.11.7",
"@zwave-js/serial": "8.11.7",
"@zwave-js/shared": "8.11.3",
"@zwave-js/config": "workspace:*",
"@zwave-js/core": "workspace:*",
"@zwave-js/nvmedit": "workspace:*",
"@zwave-js/serial": "workspace:*",
"@zwave-js/shared": "workspace:*",
"alcalzone-shared": "^4.0.1",
"ansi-colors": "^4.1.1",
"axios": "^0.26.0",
Expand All @@ -84,8 +84,8 @@
"@types/serialport": "^8.0.2",
"@types/source-map-support": "^0",
"@xstate/test": "^0.5.1",
"@zwave-js/maintenance": "8.11.7",
"@zwave-js/testing": "8.11.7",
"@zwave-js/maintenance": "workspace:*",
"@zwave-js/testing": "workspace:*",
"esbuild": "*",
"esbuild-register": "^3.3.2",
"jest-extended": "^0.11.5",
Expand Down
Loading

0 comments on commit 61305bb

Please sign in to comment.