From 73fe26d7bcd062f2abe1ce7ebda33f8bd11da779 Mon Sep 17 00:00:00 2001 From: Ross Stenersen Date: Wed, 21 Sep 2022 12:50:13 -0500 Subject: [PATCH] refactor: incorporate edge plugin into monorepo --- .changeset/clean-bulldogs-deny.md | 6 + .changeset/pre.json | 1 + .gitignore | 1 + jest.config.js | 2 + package-lock.json | 151 ++- package.json | 3 +- packages/cli/README.md | 526 ++++---- packages/cli/jest.config.js | 3 - packages/cli/package.json | 6 +- packages/cli/tsconfig.json | 4 + packages/edge/.eslintrc.js | 5 + packages/edge/README.md | 1188 +++++++++++++++++ packages/edge/global.d.ts | 1 + packages/edge/jest.config.js | 11 + packages/edge/package.json | 94 ++ .../__tests__/commands/edge/channels.test.ts | 107 ++ .../commands/edge/channels/delete.test.ts | 35 + .../commands/edge/channels/drivers.test.ts | 91 ++ .../edge/channels/enrollments.test.ts | 49 + .../commands/edge/channels/metainfo.test.ts | 132 ++ .../__tests__/commands/edge/drivers.test.ts | 152 +++ .../commands/edge/drivers/default.test.ts | 52 + .../commands/edge/drivers/delete.test.ts | 27 + .../commands/edge/drivers/install.test.ts | 82 ++ .../commands/edge/drivers/installed.test.ts | 90 ++ .../commands/edge/drivers/logcat.test.ts | 514 +++++++ .../commands/edge/drivers/package.test.ts | 312 +++++ .../commands/edge/drivers/switch.test.ts | 150 +++ .../commands/edge/drivers/uninstall.test.ts | 33 + packages/edge/src/__tests__/file-util.test.ts | 236 ++++ .../lib/commands/channels-util.test.ts | 217 +++ .../lib/commands/drivers-util.test.ts | 650 +++++++++ .../lib/commands/drivers/package-util.test.ts | 480 +++++++ .../src/__tests__/lib/live-logging.test.ts | 285 ++++ .../edge/src/__tests__/tsconfig-eslint.json | 9 + packages/edge/src/commands/edge/channels.ts | 72 + .../edge/src/commands/edge/channels/assign.ts | 45 + .../edge/src/commands/edge/channels/create.ts | 51 + .../edge/src/commands/edge/channels/delete.ts | 23 + .../src/commands/edge/channels/drivers.ts | 35 + .../edge/src/commands/edge/channels/enroll.ts | 36 + .../src/commands/edge/channels/enrollments.ts | 34 + .../src/commands/edge/channels/invites.ts | 95 ++ .../commands/edge/channels/invites/accept.ts | 22 + .../commands/edge/channels/invites/create.ts | 94 ++ .../commands/edge/channels/invites/delete.ts | 40 + .../src/commands/edge/channels/metainfo.ts | 64 + .../src/commands/edge/channels/unassign.ts | 74 + .../src/commands/edge/channels/unenroll.ts | 37 + .../edge/src/commands/edge/channels/update.ts | 28 + packages/edge/src/commands/edge/drivers.ts | 66 + .../edge/src/commands/edge/drivers/default.ts | 29 + .../edge/src/commands/edge/drivers/delete.ts | 20 + .../edge/src/commands/edge/drivers/install.ts | 62 + .../src/commands/edge/drivers/installed.ts | 50 + .../edge/src/commands/edge/drivers/logcat.ts | 291 ++++ .../edge/src/commands/edge/drivers/package.ts | 142 ++ .../edge/src/commands/edge/drivers/switch.ts | 77 ++ .../src/commands/edge/drivers/uninstall.ts | 32 + .../edge/src/lib/commands/channels-util.ts | 68 + .../edge/src/lib/commands/drivers-util.ts | 207 +++ .../src/lib/commands/drivers/logcat-util.ts | 11 + .../src/lib/commands/drivers/package-util.ts | 115 ++ packages/edge/src/lib/edge-client.ts | 20 + packages/edge/src/lib/edge-command.ts | 23 + packages/edge/src/lib/endpoints/invites.ts | 66 + packages/edge/src/lib/file-util.ts | 78 ++ packages/edge/src/lib/live-logging.ts | 284 ++++ packages/edge/tsconfig.json | 21 + tsconfig.json | 4 + 70 files changed, 7846 insertions(+), 275 deletions(-) create mode 100644 .changeset/clean-bulldogs-deny.md create mode 100644 packages/edge/.eslintrc.js create mode 100644 packages/edge/README.md create mode 100644 packages/edge/global.d.ts create mode 100644 packages/edge/jest.config.js create mode 100644 packages/edge/package.json create mode 100644 packages/edge/src/__tests__/commands/edge/channels.test.ts create mode 100644 packages/edge/src/__tests__/commands/edge/channels/delete.test.ts create mode 100644 packages/edge/src/__tests__/commands/edge/channels/drivers.test.ts create mode 100644 packages/edge/src/__tests__/commands/edge/channels/enrollments.test.ts create mode 100644 packages/edge/src/__tests__/commands/edge/channels/metainfo.test.ts create mode 100644 packages/edge/src/__tests__/commands/edge/drivers.test.ts create mode 100644 packages/edge/src/__tests__/commands/edge/drivers/default.test.ts create mode 100644 packages/edge/src/__tests__/commands/edge/drivers/delete.test.ts create mode 100644 packages/edge/src/__tests__/commands/edge/drivers/install.test.ts create mode 100644 packages/edge/src/__tests__/commands/edge/drivers/installed.test.ts create mode 100644 packages/edge/src/__tests__/commands/edge/drivers/logcat.test.ts create mode 100644 packages/edge/src/__tests__/commands/edge/drivers/package.test.ts create mode 100644 packages/edge/src/__tests__/commands/edge/drivers/switch.test.ts create mode 100644 packages/edge/src/__tests__/commands/edge/drivers/uninstall.test.ts create mode 100644 packages/edge/src/__tests__/file-util.test.ts create mode 100644 packages/edge/src/__tests__/lib/commands/channels-util.test.ts create mode 100644 packages/edge/src/__tests__/lib/commands/drivers-util.test.ts create mode 100644 packages/edge/src/__tests__/lib/commands/drivers/package-util.test.ts create mode 100644 packages/edge/src/__tests__/lib/live-logging.test.ts create mode 100644 packages/edge/src/__tests__/tsconfig-eslint.json create mode 100644 packages/edge/src/commands/edge/channels.ts create mode 100644 packages/edge/src/commands/edge/channels/assign.ts create mode 100644 packages/edge/src/commands/edge/channels/create.ts create mode 100644 packages/edge/src/commands/edge/channels/delete.ts create mode 100644 packages/edge/src/commands/edge/channels/drivers.ts create mode 100644 packages/edge/src/commands/edge/channels/enroll.ts create mode 100644 packages/edge/src/commands/edge/channels/enrollments.ts create mode 100644 packages/edge/src/commands/edge/channels/invites.ts create mode 100644 packages/edge/src/commands/edge/channels/invites/accept.ts create mode 100644 packages/edge/src/commands/edge/channels/invites/create.ts create mode 100644 packages/edge/src/commands/edge/channels/invites/delete.ts create mode 100644 packages/edge/src/commands/edge/channels/metainfo.ts create mode 100644 packages/edge/src/commands/edge/channels/unassign.ts create mode 100644 packages/edge/src/commands/edge/channels/unenroll.ts create mode 100644 packages/edge/src/commands/edge/channels/update.ts create mode 100644 packages/edge/src/commands/edge/drivers.ts create mode 100644 packages/edge/src/commands/edge/drivers/default.ts create mode 100644 packages/edge/src/commands/edge/drivers/delete.ts create mode 100644 packages/edge/src/commands/edge/drivers/install.ts create mode 100644 packages/edge/src/commands/edge/drivers/installed.ts create mode 100644 packages/edge/src/commands/edge/drivers/logcat.ts create mode 100644 packages/edge/src/commands/edge/drivers/package.ts create mode 100644 packages/edge/src/commands/edge/drivers/switch.ts create mode 100644 packages/edge/src/commands/edge/drivers/uninstall.ts create mode 100644 packages/edge/src/lib/commands/channels-util.ts create mode 100644 packages/edge/src/lib/commands/drivers-util.ts create mode 100644 packages/edge/src/lib/commands/drivers/logcat-util.ts create mode 100644 packages/edge/src/lib/commands/drivers/package-util.ts create mode 100644 packages/edge/src/lib/edge-client.ts create mode 100644 packages/edge/src/lib/edge-command.ts create mode 100644 packages/edge/src/lib/endpoints/invites.ts create mode 100644 packages/edge/src/lib/file-util.ts create mode 100644 packages/edge/src/lib/live-logging.ts create mode 100644 packages/edge/tsconfig.json diff --git a/.changeset/clean-bulldogs-deny.md b/.changeset/clean-bulldogs-deny.md new file mode 100644 index 000000000..b2f8f57fe --- /dev/null +++ b/.changeset/clean-bulldogs-deny.md @@ -0,0 +1,6 @@ +--- +"@smartthings/cli": patch +"@smartthings/plugin-cli-edge": patch +--- + +incorporate edge plugin into monorepo diff --git a/.changeset/pre.json b/.changeset/pre.json index 7e471e2e5..3551b54cf 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -3,6 +3,7 @@ "tag": "beta", "initialVersions": { "@smartthings/cli": "1.0.0-beta.0", + "@smartthings/plugin-cli-edge": "2.0.0-beta.0", "@smartthings/cli-lib": "1.0.0-beta.0", "@smartthings/cli-testlib": "1.0.0-beta.0" }, diff --git a/.gitignore b/.gitignore index 4a00c0c9a..9dcdacbda 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ smartthings-*.zip # the Typescript outDir that oclif prefers packages/cli/lib +packages/edge/lib # functional tests .pytest_cache diff --git a/jest.config.js b/jest.config.js index be711d423..23972407a 100644 --- a/jest.config.js +++ b/jest.config.js @@ -13,6 +13,7 @@ module.exports = { ], modulePathIgnorePatterns: [ '/dist', + '/lib', ], clearMocks: true, reporters: [ @@ -22,6 +23,7 @@ module.exports = { globals: { // TODO: remove when https://github.com/kulshekhar/ts-jest/issues/1967 is resolved // related flag in tsconfig as well + // eslint-disable-next-line @typescript-eslint/naming-convention 'ts-jest': { isolatedModules: true, }, diff --git a/package-lock.json b/package-lock.json index 059e16625..0dbbe741d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "workspaces": [ "packages/lib", "packages/testlib", + "packages/edge", "packages/cli" ], "devDependencies": { @@ -3757,25 +3758,8 @@ } }, "node_modules/@smartthings/plugin-cli-edge": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/@smartthings/plugin-cli-edge/-/plugin-cli-edge-1.15.5.tgz", - "integrity": "sha512-bRFiYCu9dNsWytCT/SD+cibCLMWYsvLpx1tAR26gb0fTxNXqGDh0/aTvr911yXR0ck8yw9jhiuHokGxaZXoGRQ==", - "dependencies": { - "@log4js-node/log4js-api": "^1.0.2", - "@oclif/core": "^1.13.10", - "@smartthings/cli-lib": "^1.0.0-beta.14", - "@smartthings/core-sdk": "^5.1.1", - "axios": "^0.21.4", - "inquirer": "^8.2.4", - "js-yaml": "^4.1.0", - "jszip": "^3.9.1", - "picomatch": "^2.3.1", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=12.18.1 <17", - "npm": ">=8" - } + "resolved": "packages/edge", + "link": true }, "node_modules/@tootallnate/once": { "version": "1.1.2", @@ -3861,6 +3845,12 @@ "@types/node": "*" } }, + "node_modules/@types/cli-table": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@types/cli-table/-/cli-table-0.3.0.tgz", + "integrity": "sha512-QnZUISJJXyhyD6L1e5QwXDV/A5i2W1/gl6D6YMc8u0ncPepbv/B4w3S+izVvtAg60m6h+JP09+Y/0zF2mojlFQ==", + "dev": true + }, "node_modules/@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", @@ -3967,12 +3957,12 @@ } }, "node_modules/@types/jest": { - "version": "28.1.5", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.5.tgz", - "integrity": "sha512-TLAC2zXxGnohSP3GxgIyJn7yrTeRPDEyVFyCY1NE2wzg392auI+69uk5EPGjUXuhkq/K208J/TWpLG7J8ebIEQ==", + "version": "28.1.8", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.8.tgz", + "integrity": "sha512-8TJkV++s7B6XqnDrzR1m/TT0A0h948Pnl/097veySPN67VRAgQ4gZ7n2KfJo2rVq6njQjdxU3GCCyDvAeuHoiw==", "dev": true, "dependencies": { - "jest-matcher-utils": "^28.0.0", + "expect": "^28.0.0", "pretty-format": "^28.0.0" } }, @@ -4062,6 +4052,12 @@ "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", "dev": true }, + "node_modules/@types/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@types/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-O397rnSS9iQI4OirieAtsDqvCj4+3eY1J+EPdNTKuHuRWIfUoGyzX294o8C4KJYaLqgSrd2o60c5EqCU8Zv02g==", + "dev": true + }, "node_modules/@types/prettier": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.3.tgz", @@ -18602,9 +18598,9 @@ "@oclif/plugin-help": "^5.1.12", "@oclif/plugin-not-found": "^2.3.1", "@oclif/plugin-plugins": "^2.1.0", - "@smartthings/cli-lib": "^1.0.0-beta.15", + "@smartthings/cli-lib": "^1.0.0-beta.16", "@smartthings/core-sdk": "^5.1.1", - "@smartthings/plugin-cli-edge": "^1.15.5", + "@smartthings/plugin-cli-edge": "^2.0.0-beta.0", "aws-sdk": "^2.1175.0", "inquirer": "^8.2.4", "js-yaml": "^4.1.0", @@ -18614,7 +18610,7 @@ "smartthings": "bin/run" }, "devDependencies": { - "@smartthings/cli-testlib": "^1.0.0-beta.9", + "@smartthings/cli-testlib": "^1.0.0-beta.10", "@types/inquirer": "^8.2.1", "@types/jest": "^28.1.5", "@types/js-yaml": "^4.0.5", @@ -18640,6 +18636,52 @@ "npm": ">=8" } }, + "packages/edge": { + "name": "@smartthings/plugin-cli-edge", + "version": "2.0.0-beta.0", + "license": "Apache-2.0", + "dependencies": { + "@log4js-node/log4js-api": "^1.0.2", + "@oclif/core": "^1.13.10", + "@smartthings/cli-lib": "^1.0.0-beta.16", + "@smartthings/core-sdk": "^5.1.1", + "axios": "^0.21.4", + "inquirer": "^8.2.4", + "js-yaml": "^4.1.0", + "jszip": "^3.9.1", + "picomatch": "^2.3.1", + "tslib": "^2.3.1" + }, + "devDependencies": { + "@smartthings/cli-testlib": "^1.0.0-beta.10", + "@types/cli-table": "^0.3.0", + "@types/eventsource": "^1.1.8", + "@types/inquirer": "^8.2.1", + "@types/jest": "^28.1.5", + "@types/js-yaml": "^4.0.5", + "@types/node": "^16.11.44", + "@types/picomatch": "^2.3.0", + "@typescript-eslint/eslint-plugin": "^5.30.6", + "@typescript-eslint/parser": "^5.30.6", + "eslint": "^8.19.0", + "eslint-plugin-eslint-comments": "^3.2.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jest": "^26.6.0", + "eventsource": "^2.0.0", + "jest": "^28.1.3", + "jest-extended": "^0.11.5", + "oclif": "^3.1.2", + "rimraf": "^3.0.2", + "strip-ansi": "^6.0.1", + "ts-jest": "^28.0.6", + "ts-node": "^10.9.1", + "typescript": "^4.7.4" + }, + "engines": { + "node": ">=16.14.2 <17", + "npm": ">=8" + } + }, "packages/lib": { "name": "@smartthings/cli-lib", "version": "1.0.0-beta.16", @@ -21779,10 +21821,10 @@ "@oclif/plugin-help": "^5.1.12", "@oclif/plugin-not-found": "^2.3.1", "@oclif/plugin-plugins": "^2.1.0", - "@smartthings/cli-lib": "^1.0.0-beta.15", - "@smartthings/cli-testlib": "^1.0.0-beta.9", + "@smartthings/cli-lib": "^1.0.0-beta.16", + "@smartthings/cli-testlib": "^1.0.0-beta.10", "@smartthings/core-sdk": "^5.1.1", - "@smartthings/plugin-cli-edge": "^1.15.5", + "@smartthings/plugin-cli-edge": "^2.0.0-beta.0", "@types/inquirer": "^8.2.1", "@types/jest": "^28.1.5", "@types/js-yaml": "^4.0.5", @@ -21899,20 +21941,41 @@ } }, "@smartthings/plugin-cli-edge": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/@smartthings/plugin-cli-edge/-/plugin-cli-edge-1.15.5.tgz", - "integrity": "sha512-bRFiYCu9dNsWytCT/SD+cibCLMWYsvLpx1tAR26gb0fTxNXqGDh0/aTvr911yXR0ck8yw9jhiuHokGxaZXoGRQ==", + "version": "file:packages/edge", "requires": { "@log4js-node/log4js-api": "^1.0.2", "@oclif/core": "^1.13.10", - "@smartthings/cli-lib": "^1.0.0-beta.14", + "@smartthings/cli-lib": "^1.0.0-beta.16", + "@smartthings/cli-testlib": "^1.0.0-beta.10", "@smartthings/core-sdk": "^5.1.1", + "@types/cli-table": "^0.3.0", + "@types/eventsource": "^1.1.8", + "@types/inquirer": "^8.2.1", + "@types/jest": "^28.1.5", + "@types/js-yaml": "^4.0.5", + "@types/node": "^16.11.44", + "@types/picomatch": "^2.3.0", + "@typescript-eslint/eslint-plugin": "^5.30.6", + "@typescript-eslint/parser": "^5.30.6", "axios": "^0.21.4", + "eslint": "^8.19.0", + "eslint-plugin-eslint-comments": "^3.2.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jest": "^26.6.0", + "eventsource": "^2.0.0", "inquirer": "^8.2.4", + "jest": "^28.1.3", + "jest-extended": "^0.11.5", "js-yaml": "^4.1.0", "jszip": "^3.9.1", + "oclif": "^3.1.2", "picomatch": "^2.3.1", - "tslib": "^2.3.1" + "rimraf": "^3.0.2", + "strip-ansi": "^6.0.1", + "ts-jest": "^28.0.6", + "ts-node": "^10.9.1", + "tslib": "^2.3.1", + "typescript": "^4.7.4" } }, "@tootallnate/once": { @@ -21996,6 +22059,12 @@ "@types/node": "*" } }, + "@types/cli-table": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@types/cli-table/-/cli-table-0.3.0.tgz", + "integrity": "sha512-QnZUISJJXyhyD6L1e5QwXDV/A5i2W1/gl6D6YMc8u0ncPepbv/B4w3S+izVvtAg60m6h+JP09+Y/0zF2mojlFQ==", + "dev": true + }, "@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", @@ -22102,12 +22171,12 @@ } }, "@types/jest": { - "version": "28.1.5", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.5.tgz", - "integrity": "sha512-TLAC2zXxGnohSP3GxgIyJn7yrTeRPDEyVFyCY1NE2wzg392auI+69uk5EPGjUXuhkq/K208J/TWpLG7J8ebIEQ==", + "version": "28.1.8", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.8.tgz", + "integrity": "sha512-8TJkV++s7B6XqnDrzR1m/TT0A0h948Pnl/097veySPN67VRAgQ4gZ7n2KfJo2rVq6njQjdxU3GCCyDvAeuHoiw==", "dev": true, "requires": { - "jest-matcher-utils": "^28.0.0", + "expect": "^28.0.0", "pretty-format": "^28.0.0" } }, @@ -22197,6 +22266,12 @@ "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", "dev": true }, + "@types/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@types/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-O397rnSS9iQI4OirieAtsDqvCj4+3eY1J+EPdNTKuHuRWIfUoGyzX294o8C4KJYaLqgSrd2o60c5EqCU8Zv02g==", + "dev": true + }, "@types/prettier": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.3.tgz", diff --git a/package.json b/package.json index 02586209c..5a209621d 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,12 @@ "package": "npm run package -w packages/cli", "version": "changeset version && npm i --package-lock-only && npm run build && npm run version -w packages/cli", "release": "npm run build && changeset publish", - "readme": "npm run readme -w packages/cli" + "readme": "npm run readme -w packages/edge && npm run readme -w packages/cli" }, "workspaces": [ "packages/lib", "packages/testlib", + "packages/edge", "packages/cli" ], "devDependencies": { diff --git a/packages/cli/README.md b/packages/cli/README.md index 2d466ce42..9cbde56dc 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -3587,17 +3587,19 @@ FLAGS -A, --all-organizations include entities from all organizations the user belongs to -I, --include-read-only include subscribed-to channels as well as owned channels -O, --organization= the organization ID to use for this command - -h, --help Show CLI help. - -j, --json use JSON format of input and/or output - -o, --output= specify output file - -p, --profile= [default: default] configuration profile - -t, --token= the auth token to use - -y, --yaml use YAML format of input and/or output - --language= ISO language code or "NONE" to not specify a language. Defaults to the OS locale - --subscriber-id= filter results based on subscriber id (e.g. hub id) + --subscriber-id= filter results based on subscriber id (e.g. hub id) --subscriber-type=