From af8def5742cfab5359b660829d68d7a3bdec6238 Mon Sep 17 00:00:00 2001 From: George Cook Date: Thu, 26 May 2022 15:41:18 +0200 Subject: [PATCH 1/3] bump --- CHANGELOG.md | 15 ++++++++++++++- package.json | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5bf86f7..c7012c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). -## [0.23.0](https://github.com/georgejecook/maestro-roku-bsc-plugin/compare/0.22.3...0.23.0) +## [0.23.1](https://github.com/georgejecook/maestro-roku-bsc-plugin/compare/0.23.0...0.23.1) + +### Merged + +- getAllFields now returns `Map` to protect against js prototype collision [`#61`](https://github.com/georgejecook/maestro-roku-bsc-plugin/pull/61) +- addresses serious performance regression [`#60`](https://github.com/georgejecook/maestro-roku-bsc-plugin/pull/60) +- Use direct imports instead of import * [`#59`](https://github.com/georgejecook/maestro-roku-bsc-plugin/pull/59) + +### Commits + +- bump [`987ec11`](https://github.com/georgejecook/maestro-roku-bsc-plugin/commit/987ec11e5e945531476e05acdbf3490e4bf33a8a) +- Fix lint issue [`2e429d1`](https://github.com/georgejecook/maestro-roku-bsc-plugin/commit/2e429d1ed3a84f0446e6fdb0f43ed7b73d878552) + +## [0.23.0](https://github.com/georgejecook/maestro-roku-bsc-plugin/compare/0.22.3...0.23.0) - 2022-05-26 ### Merged diff --git a/package.json b/package.json index 167bffa..aa3b1b6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "maestro-roku-bsc-plugin", - "version": "0.23.0", + "version": "0.23.1", "description": "Visual studio plugin for maestro brightscript development", "files": [ "dist/**/!(*.spec.*)*", From d2f3230a338076d02e480ed025e8735e7079c66a Mon Sep 17 00:00:00 2001 From: George Cook Date: Thu, 26 May 2022 19:39:42 +0200 Subject: [PATCH 2/3] fixes node field support for interface public fields --- package-lock.json | 716 ++++++++---------------------- package.json | 4 +- src/lib/node-classes/NodeClass.ts | 7 + src/plugin.spec.ts | 70 +++ 4 files changed, 253 insertions(+), 544 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9e2002e..5621a08 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "maestro-roku-bsc-plugin", - "version": "0.23.0", + "version": "0.23.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "maestro-roku-bsc-plugin", - "version": "0.23.0", + "version": "0.23.1", "license": "ISC", "dependencies": { "debounce": "^1.2.0", @@ -24,7 +24,7 @@ "@typescript-eslint/eslint-plugin": "^4.4.1", "@typescript-eslint/parser": "^4.4.1", "auto-changelog": "^2.2.1", - "brighterscript": "^0.50.1", + "brighterscript": "file:../../vsc/brighterscript", "chai": "^4.2.0", "eslint": "^7.32.0", "eslint-plugin-github": "4.3.0", @@ -41,7 +41,94 @@ "typescript": "^4.1.3" }, "peerDependencies": { - "brighterscript": "^0.50.1" + "brighterscript": "file:../../vsc/brighterscript" + } + }, + "../../vsc/brighterscript": { + "version": "0.51.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@rokucommunity/bslib": "^0.1.1", + "@xml-tools/parser": "^1.0.7", + "array-flat-polyfill": "^1.0.1", + "chalk": "^2.4.2", + "chevrotain": "^7.0.1", + "chokidar": "^3.5.1", + "clear": "^0.1.0", + "cross-platform-clear-console": "^2.3.0", + "debounce-promise": "^3.1.0", + "eventemitter3": "^4.0.0", + "file-url": "^3.0.0", + "fs-extra": "^7.0.1", + "glob": "^7.1.6", + "jsonc-parser": "^2.3.0", + "long": "^3.2.0", + "luxon": "^1.8.3", + "minimatch": "^3.0.4", + "moment": "^2.23.0", + "p-settle": "^2.1.0", + "parse-ms": "^2.1.0", + "roku-deploy": "^3.7.0", + "serialize-error": "^7.0.1", + "source-map": "^0.7.3", + "vscode-languageserver": "7.0.0", + "vscode-languageserver-protocol": "3.16.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-uri": "^2.1.1", + "xml2js": "^0.4.19", + "yargs": "^16.2.0" + }, + "bin": { + "bsc": "dist/cli.js" + }, + "devDependencies": { + "@guyplusplus/turndown-plugin-gfm": "^1.0.7", + "@types/benchmark": "^1.0.31", + "@types/chai": "^4.1.2", + "@types/command-line-args": "^5.0.0", + "@types/command-line-usage": "^5.0.1", + "@types/debounce-promise": "^3.1.1", + "@types/fs-extra": "^5.0.1", + "@types/glob": "^7.1.1", + "@types/marked": "^4.0.3", + "@types/mocha": "^5.2.5", + "@types/node": "^11.9.0", + "@types/sinon": "^9.0.4", + "@types/turndown": "^5.0.1", + "@types/yargs": "^15.0.5", + "@typescript-eslint/eslint-plugin": "4.32.0", + "@typescript-eslint/parser": "4.32.0", + "benchmark": "^2.1.4", + "chai": "^4.2.0", + "chai-files": "^1.4.0", + "coveralls": "^3.0.0", + "deepmerge": "^4.2.2", + "eslint": "^7.32.0", + "eslint-plugin-github": "4.3.0", + "eslint-plugin-no-only-tests": "2.6.0", + "he": "^1.2.0", + "madge": "^4.0.2", + "marked": "^4.0.12", + "mocha": "^9.1.3", + "node-run-cmd": "^1.0.1", + "nyc": "^15.1.0", + "object.pick": "^1.3.0", + "phin": "^3.5.1", + "rimraf": "^2.6.2", + "semver-extra": "^3.0.0", + "sinon": "^9.0.2", + "source-map-support": "^0.5.13", + "sync-request": "^6.1.0", + "testdouble": "^3.5.2", + "thenby": "^1.3.4", + "ts-node": "8.9.1", + "turndown": "^7.1.1", + "turndown-plugin-gfm": "^1.0.2", + "typescript": "^4.6.3", + "typescript-formatter": "^7.2.2", + "undent": "^0.1.0", + "vscode-jsonrpc": "^5.0.1" } }, "node_modules/@ampproject/remapping": { @@ -798,12 +885,6 @@ "node": ">= 8" } }, - "node_modules/@rokucommunity/bslib": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@rokucommunity/bslib/-/bslib-0.1.1.tgz", - "integrity": "sha512-2ox6EUL+UTtccTbD4dbVjZK3QHa0PHCqpoKMF8lZz9ayzzEP3iVPF8KZR6hOi6bxsIcbGXVjqmtCVkpC4P9SrA==", - "dev": true - }, "node_modules/@tsconfig/node10": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", @@ -1090,24 +1171,6 @@ "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", "dev": true }, - "node_modules/@xml-tools/parser": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@xml-tools/parser/-/parser-1.0.11.tgz", - "integrity": "sha512-aKqQ077XnR+oQtHJlrAflaZaL7qZsulWc/i/ZEooar5JiWj1eLt0+Wg28cpa+XLney107wXqneC+oG1IZvxkTA==", - "dev": true, - "dependencies": { - "chevrotain": "7.1.1" - } - }, - "node_modules/@xml-tools/parser/node_modules/chevrotain": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-7.1.1.tgz", - "integrity": "sha512-wy3mC1x4ye+O+QkEinVJkPf5u2vsrDIYW9G7ZuwFl6v/Yu0LwUuT2POsb+NUWApebyxfkQq6+yDfRExbnI5rcw==", - "dev": true, - "dependencies": { - "regexp-to-ast": "0.5.0" - } - }, "node_modules/acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -1241,15 +1304,6 @@ "sprintf-js": "~1.0.2" } }, - "node_modules/array-flat-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-flat-polyfill/-/array-flat-polyfill-1.0.1.tgz", - "integrity": "sha512-hfJmKupmQN0lwi0xG6FQ5U8Rd97RnIERplymOv/qpq8AoNKPPAnxJadjFA23FNWm88wykh9HmpLJUUwUtNU/iw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/array-includes": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", @@ -1419,113 +1473,8 @@ } }, "node_modules/brighterscript": { - "version": "0.50.1", - "resolved": "https://registry.npmjs.org/brighterscript/-/brighterscript-0.50.1.tgz", - "integrity": "sha512-hOTBGruwO8abMeBOU2mTc3Wew4Lb3cXDtHj/JFfcypPr/NOWa5W6a+4T0p/wwxYxUQUR8C+QDV/uRqLWZGM2bA==", - "dev": true, - "dependencies": { - "@rokucommunity/bslib": "^0.1.1", - "@xml-tools/parser": "^1.0.7", - "array-flat-polyfill": "^1.0.1", - "chalk": "^2.4.2", - "chevrotain": "^7.0.1", - "chokidar": "^3.5.1", - "clear": "^0.1.0", - "cross-platform-clear-console": "^2.3.0", - "debounce-promise": "^3.1.0", - "eventemitter3": "^4.0.0", - "file-url": "^3.0.0", - "fs-extra": "^7.0.1", - "glob": "^7.1.6", - "jsonc-parser": "^2.3.0", - "long": "^3.2.0", - "luxon": "^1.8.3", - "minimatch": "^3.0.4", - "moment": "^2.23.0", - "p-settle": "^2.1.0", - "parse-ms": "^2.1.0", - "roku-deploy": "^3.5.4", - "serialize-error": "^7.0.1", - "source-map": "^0.7.3", - "vscode-languageserver": "7.0.0", - "vscode-languageserver-protocol": "3.16.0", - "vscode-languageserver-textdocument": "^1.0.1", - "vscode-uri": "^2.1.1", - "xml2js": "^0.4.19", - "yargs": "^16.2.0" - }, - "bin": { - "bsc": "dist/cli.js" - } - }, - "node_modules/brighterscript/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/brighterscript/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/brighterscript/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/brighterscript/node_modules/vscode-jsonrpc": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", - "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==", - "dev": true, - "engines": { - "node": ">=8.0.0 || >=10.0.0" - } - }, - "node_modules/brighterscript/node_modules/vscode-languageserver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz", - "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==", - "dev": true, - "dependencies": { - "vscode-languageserver-protocol": "3.16.0" - }, - "bin": { - "installServerIntoExtension": "bin/installServerIntoExtension" - } - }, - "node_modules/brighterscript/node_modules/vscode-languageserver-protocol": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz", - "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==", - "dev": true, - "dependencies": { - "vscode-jsonrpc": "6.0.0", - "vscode-languageserver-types": "3.16.0" - } - }, - "node_modules/brighterscript/node_modules/vscode-languageserver-types": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", - "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==", - "dev": true + "resolved": "../../vsc/brighterscript", + "link": true }, "node_modules/browser-stdout": { "version": "1.3.1", @@ -1675,42 +1624,6 @@ "node": "*" } }, - "node_modules/chevrotain": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-7.1.2.tgz", - "integrity": "sha512-9bQsXVQ7UAvzMs7iUBBJ9Yv//exOy7bIR3PByOEk4M64vIE/LsiOiX7VIkMF/vEMlrSStwsaE884Bp9CpjtC5g==", - "dev": true, - "dependencies": { - "regexp-to-ast": "0.5.0" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -1720,15 +1633,6 @@ "node": ">=6" } }, - "node_modules/clear": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/clear/-/clear-0.1.0.tgz", - "integrity": "sha512-qMjRnoL+JDPJHeLePZJuao6+8orzHMGP04A8CdwCNsKhRbOnKRjefxONR7bwILT3MHecxKBjHkKL/tkZ8r4Uzw==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -1820,12 +1724,6 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "node_modules/cross-platform-clear-console": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cross-platform-clear-console/-/cross-platform-clear-console-2.3.0.tgz", - "integrity": "sha512-To+sJ6plHHC6k5DfdvSVn6F1GRGJh/R6p76bCpLbyMyHEmbqFyuMAeGwDcz/nGDWH3HUcjFTTX9iUSCzCg9Eiw==", - "dev": true - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1859,17 +1757,16 @@ "node": "*" } }, + "node_modules/dayjs": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.2.tgz", + "integrity": "sha512-F4LXf1OeU9hrSYRPTTj/6FbO4HTjPKXvEIC1P2kcnFurViINCVk3ZV0xAS3XVx9MkMsXbbqlK6hjseaYbgKEHw==" + }, "node_modules/debounce": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" }, - "node_modules/debounce-promise": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/debounce-promise/-/debounce-promise-3.1.2.tgz", - "integrity": "sha512-rZHcgBkbYavBeD9ej6sP56XfG53d51CD4dnaw989YX/nZ/ZJfgRx/9ePKmTNiUiyQvh4mtrMoS3OAWW+yoYtpg==", - "dev": true - }, "node_modules/debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -2628,12 +2525,6 @@ "node": ">=0.10.0" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -2704,15 +2595,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/file-url": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz", - "integrity": "sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -4026,15 +3908,6 @@ "node": ">=8" } }, - "node_modules/long": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, "node_modules/loupe": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", @@ -4056,15 +3929,6 @@ "node": ">=10" } }, - "node_modules/luxon": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.0.tgz", - "integrity": "sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -4834,28 +4698,6 @@ "node": ">=8" } }, - "node_modules/p-reflect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reflect/-/p-reflect-1.0.0.tgz", - "integrity": "sha1-9Poe4btUbY6z7AMhFI3+CnkTe7g=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-settle": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-settle/-/p-settle-2.1.0.tgz", - "integrity": "sha512-NHFIUYc+fQTFRrzzAugq0l1drwi57PB522smetcY8C/EoTYs6cU/fC6TJj0N3rq5NhhJJbhf0VGWziL3jZDnjA==", - "dev": true, - "dependencies": { - "p-limit": "^1.2.0", - "p-reflect": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", @@ -5202,24 +5044,6 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/regexp-to-ast": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.5.0.tgz", - "integrity": "sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==", - "dev": true - }, "node_modules/regexp.prototype.flags": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", @@ -5367,12 +5191,13 @@ } }, "node_modules/roku-deploy": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/roku-deploy/-/roku-deploy-3.6.0.tgz", - "integrity": "sha512-kfgM/EOhM/X1wXOx+8hGCIH9o/eu5Vtw8qmhnHA0EIIyRhHQPy+W4iKcab6fPbibLKo4f0V47GKO1TTKNR+6kA==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/roku-deploy/-/roku-deploy-3.7.0.tgz", + "integrity": "sha512-+MBppc3q7ZEhzXu86O43mITxa+ro4hkCCXt4UhsWDqvCNx7w4b6CHzjrRAXYtdGQoDe6xqZjJhqCqC/YytJqWA==", "dependencies": { "chalk": "^2.4.2", "dateformat": "^3.0.3", + "dayjs": "^1.11.0", "fast-glob": "^3.2.11", "fs-extra": "^7.0.1", "is-glob": "^4.0.3", @@ -5382,6 +5207,7 @@ "moment": "^2.29.1", "parse-ms": "^2.1.0", "request": "^2.88.0", + "temp-dir": "^2.0.0", "xml2js": "^0.4.23" }, "bin": { @@ -5483,33 +5309,6 @@ "node": ">=10" } }, - "node_modules/serialize-error": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", - "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", - "dev": true, - "dependencies": { - "type-fest": "^0.13.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/serialize-error/node_modules/type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/serialize-javascript": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", @@ -5881,6 +5680,14 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "engines": { + "node": ">=8" + } + }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -6250,23 +6057,11 @@ "vscode-languageserver-types": "3.15.1" } }, - "node_modules/vscode-languageserver-textdocument": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.4.tgz", - "integrity": "sha512-/xhqXP/2A2RSs+J8JNXpiiNVvvNM0oTosNVmQnunlKvq9o4mupHOBAnnzH0lwIPKazXKvAKsVp1kr+H/K4lgoQ==", - "dev": true - }, "node_modules/vscode-languageserver-types": { "version": "3.15.1", "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==" }, - "node_modules/vscode-uri": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz", - "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==", - "dev": true - }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -7163,12 +6958,6 @@ "fastq": "^1.6.0" } }, - "@rokucommunity/bslib": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@rokucommunity/bslib/-/bslib-0.1.1.tgz", - "integrity": "sha512-2ox6EUL+UTtccTbD4dbVjZK3QHa0PHCqpoKMF8lZz9ayzzEP3iVPF8KZR6hOi6bxsIcbGXVjqmtCVkpC4P9SrA==", - "dev": true - }, "@tsconfig/node10": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", @@ -7363,26 +7152,6 @@ "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", "dev": true }, - "@xml-tools/parser": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@xml-tools/parser/-/parser-1.0.11.tgz", - "integrity": "sha512-aKqQ077XnR+oQtHJlrAflaZaL7qZsulWc/i/ZEooar5JiWj1eLt0+Wg28cpa+XLney107wXqneC+oG1IZvxkTA==", - "dev": true, - "requires": { - "chevrotain": "7.1.1" - }, - "dependencies": { - "chevrotain": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-7.1.1.tgz", - "integrity": "sha512-wy3mC1x4ye+O+QkEinVJkPf5u2vsrDIYW9G7ZuwFl6v/Yu0LwUuT2POsb+NUWApebyxfkQq6+yDfRExbnI5rcw==", - "dev": true, - "requires": { - "regexp-to-ast": "0.5.0" - } - } - } - }, "acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -7483,12 +7252,6 @@ "sprintf-js": "~1.0.2" } }, - "array-flat-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-flat-polyfill/-/array-flat-polyfill-1.0.1.tgz", - "integrity": "sha512-hfJmKupmQN0lwi0xG6FQ5U8Rd97RnIERplymOv/qpq8AoNKPPAnxJadjFA23FNWm88wykh9HmpLJUUwUtNU/iw==", - "dev": true - }, "array-includes": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", @@ -7616,99 +7379,83 @@ } }, "brighterscript": { - "version": "0.50.1", - "resolved": "https://registry.npmjs.org/brighterscript/-/brighterscript-0.50.1.tgz", - "integrity": "sha512-hOTBGruwO8abMeBOU2mTc3Wew4Lb3cXDtHj/JFfcypPr/NOWa5W6a+4T0p/wwxYxUQUR8C+QDV/uRqLWZGM2bA==", - "dev": true, + "version": "file:../../vsc/brighterscript", "requires": { + "@guyplusplus/turndown-plugin-gfm": "^1.0.7", "@rokucommunity/bslib": "^0.1.1", + "@types/benchmark": "^1.0.31", + "@types/chai": "^4.1.2", + "@types/command-line-args": "^5.0.0", + "@types/command-line-usage": "^5.0.1", + "@types/debounce-promise": "^3.1.1", + "@types/fs-extra": "^5.0.1", + "@types/glob": "^7.1.1", + "@types/marked": "^4.0.3", + "@types/mocha": "^5.2.5", + "@types/node": "^11.9.0", + "@types/sinon": "^9.0.4", + "@types/turndown": "^5.0.1", + "@types/yargs": "^15.0.5", + "@typescript-eslint/eslint-plugin": "4.32.0", + "@typescript-eslint/parser": "4.32.0", "@xml-tools/parser": "^1.0.7", "array-flat-polyfill": "^1.0.1", + "benchmark": "^2.1.4", + "chai": "^4.2.0", + "chai-files": "^1.4.0", "chalk": "^2.4.2", "chevrotain": "^7.0.1", "chokidar": "^3.5.1", "clear": "^0.1.0", + "coveralls": "^3.0.0", "cross-platform-clear-console": "^2.3.0", "debounce-promise": "^3.1.0", + "deepmerge": "^4.2.2", + "eslint": "^7.32.0", + "eslint-plugin-github": "4.3.0", + "eslint-plugin-no-only-tests": "2.6.0", "eventemitter3": "^4.0.0", "file-url": "^3.0.0", "fs-extra": "^7.0.1", "glob": "^7.1.6", + "he": "^1.2.0", "jsonc-parser": "^2.3.0", "long": "^3.2.0", "luxon": "^1.8.3", + "madge": "^4.0.2", + "marked": "^4.0.12", "minimatch": "^3.0.4", + "mocha": "^9.1.3", "moment": "^2.23.0", + "node-run-cmd": "^1.0.1", + "nyc": "^15.1.0", + "object.pick": "^1.3.0", "p-settle": "^2.1.0", "parse-ms": "^2.1.0", - "roku-deploy": "^3.5.4", + "phin": "^3.5.1", + "rimraf": "^2.6.2", + "roku-deploy": "^3.7.0", + "semver-extra": "^3.0.0", "serialize-error": "^7.0.1", + "sinon": "^9.0.2", "source-map": "^0.7.3", + "source-map-support": "^0.5.13", + "sync-request": "^6.1.0", + "testdouble": "^3.5.2", + "thenby": "^1.3.4", + "ts-node": "8.9.1", + "turndown": "^7.1.1", + "turndown-plugin-gfm": "^1.0.2", + "typescript": "^4.6.3", + "typescript-formatter": "^7.2.2", + "undent": "^0.1.0", + "vscode-jsonrpc": "^5.0.1", "vscode-languageserver": "7.0.0", "vscode-languageserver-protocol": "3.16.0", "vscode-languageserver-textdocument": "^1.0.1", "vscode-uri": "^2.1.1", "xml2js": "^0.4.19", "yargs": "^16.2.0" - }, - "dependencies": { - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "vscode-jsonrpc": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", - "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==", - "dev": true - }, - "vscode-languageserver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz", - "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==", - "dev": true, - "requires": { - "vscode-languageserver-protocol": "3.16.0" - } - }, - "vscode-languageserver-protocol": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz", - "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==", - "dev": true, - "requires": { - "vscode-jsonrpc": "6.0.0", - "vscode-languageserver-types": "3.16.0" - } - }, - "vscode-languageserver-types": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", - "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==", - "dev": true - } } }, "browser-stdout": { @@ -7812,43 +7559,12 @@ "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", "dev": true }, - "chevrotain": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-7.1.2.tgz", - "integrity": "sha512-9bQsXVQ7UAvzMs7iUBBJ9Yv//exOy7bIR3PByOEk4M64vIE/LsiOiX7VIkMF/vEMlrSStwsaE884Bp9CpjtC5g==", - "dev": true, - "requires": { - "regexp-to-ast": "0.5.0" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, "clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true }, - "clear": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/clear/-/clear-0.1.0.tgz", - "integrity": "sha512-qMjRnoL+JDPJHeLePZJuao6+8orzHMGP04A8CdwCNsKhRbOnKRjefxONR7bwILT3MHecxKBjHkKL/tkZ8r4Uzw==", - "dev": true - }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -7932,12 +7648,6 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "cross-platform-clear-console": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cross-platform-clear-console/-/cross-platform-clear-console-2.3.0.tgz", - "integrity": "sha512-To+sJ6plHHC6k5DfdvSVn6F1GRGJh/R6p76bCpLbyMyHEmbqFyuMAeGwDcz/nGDWH3HUcjFTTX9iUSCzCg9Eiw==", - "dev": true - }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -7962,17 +7672,16 @@ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==" }, + "dayjs": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.2.tgz", + "integrity": "sha512-F4LXf1OeU9hrSYRPTTj/6FbO4HTjPKXvEIC1P2kcnFurViINCVk3ZV0xAS3XVx9MkMsXbbqlK6hjseaYbgKEHw==" + }, "debounce": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" }, - "debounce-promise": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/debounce-promise/-/debounce-promise-3.1.2.tgz", - "integrity": "sha512-rZHcgBkbYavBeD9ej6sP56XfG53d51CD4dnaw989YX/nZ/ZJfgRx/9ePKmTNiUiyQvh4mtrMoS3OAWW+yoYtpg==", - "dev": true - }, "debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -8538,12 +8247,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -8605,12 +8308,6 @@ "flat-cache": "^3.0.4" } }, - "file-url": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz", - "integrity": "sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA==", - "dev": true - }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -9574,12 +9271,6 @@ } } }, - "long": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=", - "dev": true - }, "loupe": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", @@ -9598,12 +9289,6 @@ "yallist": "^4.0.0" } }, - "luxon": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.0.tgz", - "integrity": "sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ==", - "dev": true - }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -10169,22 +9854,6 @@ "aggregate-error": "^3.0.0" } }, - "p-reflect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reflect/-/p-reflect-1.0.0.tgz", - "integrity": "sha1-9Poe4btUbY6z7AMhFI3+CnkTe7g=", - "dev": true - }, - "p-settle": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-settle/-/p-settle-2.1.0.tgz", - "integrity": "sha512-NHFIUYc+fQTFRrzzAugq0l1drwi57PB522smetcY8C/EoTYs6cU/fC6TJj0N3rq5NhhJJbhf0VGWziL3jZDnjA==", - "dev": true, - "requires": { - "p-limit": "^1.2.0", - "p-reflect": "^1.0.0" - } - }, "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", @@ -10431,21 +10100,6 @@ } } }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "regexp-to-ast": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.5.0.tgz", - "integrity": "sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==", - "dev": true - }, "regexp.prototype.flags": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", @@ -10549,12 +10203,13 @@ } }, "roku-deploy": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/roku-deploy/-/roku-deploy-3.6.0.tgz", - "integrity": "sha512-kfgM/EOhM/X1wXOx+8hGCIH9o/eu5Vtw8qmhnHA0EIIyRhHQPy+W4iKcab6fPbibLKo4f0V47GKO1TTKNR+6kA==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/roku-deploy/-/roku-deploy-3.7.0.tgz", + "integrity": "sha512-+MBppc3q7ZEhzXu86O43mITxa+ro4hkCCXt4UhsWDqvCNx7w4b6CHzjrRAXYtdGQoDe6xqZjJhqCqC/YytJqWA==", "requires": { "chalk": "^2.4.2", "dateformat": "^3.0.3", + "dayjs": "^1.11.0", "fast-glob": "^3.2.11", "fs-extra": "^7.0.1", "is-glob": "^4.0.3", @@ -10564,6 +10219,7 @@ "moment": "^2.29.1", "parse-ms": "^2.1.0", "request": "^2.88.0", + "temp-dir": "^2.0.0", "xml2js": "^0.4.23" }, "dependencies": { @@ -10624,23 +10280,6 @@ "lru-cache": "^6.0.0" } }, - "serialize-error": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", - "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", - "dev": true, - "requires": { - "type-fest": "^0.13.1" - }, - "dependencies": { - "type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true - } - } - }, "serialize-javascript": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", @@ -10932,6 +10571,11 @@ } } }, + "temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==" + }, "test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -11205,23 +10849,11 @@ "vscode-languageserver-types": "3.15.1" } }, - "vscode-languageserver-textdocument": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.4.tgz", - "integrity": "sha512-/xhqXP/2A2RSs+J8JNXpiiNVvvNM0oTosNVmQnunlKvq9o4mupHOBAnnzH0lwIPKazXKvAKsVp1kr+H/K4lgoQ==", - "dev": true - }, "vscode-languageserver-types": { "version": "3.15.1", "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==" }, - "vscode-uri": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz", - "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==", - "dev": true - }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", diff --git a/package.json b/package.json index aa3b1b6..7f90f00 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "@typescript-eslint/eslint-plugin": "^4.4.1", "@typescript-eslint/parser": "^4.4.1", "auto-changelog": "^2.2.1", - "brighterscript": "^0.50.1", + "brighterscript": "^0.51.2", "chai": "^4.2.0", "eslint": "^7.32.0", "eslint-plugin-github": "4.3.0", @@ -43,7 +43,7 @@ "typescript": "^4.1.3" }, "peerDependencies": { - "brighterscript": "^0.50.1" + "brighterscript": "^0.51.2" }, "preferGlobal": true, "keywords": [ diff --git a/src/lib/node-classes/NodeClass.ts b/src/lib/node-classes/NodeClass.ts index 0cb5559..e28ed33 100644 --- a/src/lib/node-classes/NodeClass.ts +++ b/src/lib/node-classes/NodeClass.ts @@ -586,6 +586,8 @@ export class NodeClass { fieldType = 'node'; } else if (fieldType === 'mc.types.array') { fieldType = 'array'; + } else if (this.getInterfaceFromFieldType(fieldType)) { + fieldType = 'assocarray'; } else if (!this.knownFieldTypes[fieldType]) { // keep original case fieldType = field.type.text; @@ -624,6 +626,11 @@ export class NodeClass { return undefined; } + getInterfaceFromFieldType(fieldType: string) { + let interfaceMap = this.file.program.getFirstScopeForFile(this.file)?.getInterfaceMap(); + return interfaceMap.get(fieldType.toLowerCase())?.item; + } + getEnumTypeFromField(field: FieldStatement) { let enumValue = this.getEnumFromField(field); diff --git a/src/plugin.spec.ts b/src/plugin.spec.ts index 2e2a4cb..5306c57 100644 --- a/src/plugin.spec.ts +++ b/src/plugin.spec.ts @@ -1057,6 +1057,76 @@ describe('MaestroPlugin', () => { return value end function`); }); + it('supports interface type in public fields', async () => { + plugin.afterProgramCreate(program); + program.setFile('source/comp.bs', ` + interface myInterface + text as string + end interface + namespace myNamespace + interface myInterface + text as string + end interface + end namespace + @node("Comp", "Group") + class Comp + + public e1 as myInterface + public e2 as myNamespace.myInterface + + function new() + end function + end class + `); + program.validate(); + await builder.transpile(); + expect(builder.getDiagnostics().filter((d) => d.severity === DiagnosticSeverity.Error && !d.message.includes('mc.types.'))).to.be.empty; + + expect( + getContents('components/maestro/generated/Comp.xml') + ).to.eql(undent` + + + + + + +