From 95d416306cf0a319498c6a7c4972879abca573e1 Mon Sep 17 00:00:00 2001 From: Mark McCulloh Date: Mon, 26 Jun 2023 17:27:06 -0400 Subject: [PATCH] fix: plugin module resolution works unexpectedly (#3089) In theory, plugin module resolution should work based on where the plugin file is located. Previously it was pulling dependencies from (I think?) the CLI's node_modules. I'm not actually totally sure, but I know it wasn't resolving them based on the actual plugin file location. This change creates a `require` to invoke the plugin, very similar to the way we do it for preflight execution. This change on it's own broke the plugin e2e tests (because that folder did not have a node_modules with `@cdktf/provider-aws` in it), so I also moved them to `examples/tests/valid/plugins`, that way they can use the node_modules from the valid tests. ## Checklist - [x] Title matches [Winglang's style guide](https://docs.winglang.io/contributing/pull_requests#how-are-pull-request-titles-formatted) - [x] Description explains motivation and solution - [ ] Tests added (always) - [ ] Docs updated (only required for features) - [ ] Added `pr/e2e-full` label if this feature requires end-to-end testing *By submitting this pull request, I confirm that my contribution is made under the terms of the [Monada Contribution License](https://docs.winglang.io/terms-and-policies/contribution-license.html)*. --- examples/{ => tests/valid}/plugins/app.w | 0 .../valid}/plugins/permission-boundary.js | 0 .../{ => tests/valid}/plugins/replicate-s3.js | 0 .../{ => tests/valid}/plugins/tf-backend.js | 0 libs/wingsdk/src/core/plugin-manager.ts | 10 +- tools/hangar/package-lock.json | 254 +++++------------- tools/hangar/package.json | 4 +- tools/hangar/src/paths.ts | 2 +- tools/hangar/src/plugins.test.ts | 4 +- 9 files changed, 76 insertions(+), 198 deletions(-) rename examples/{ => tests/valid}/plugins/app.w (100%) rename examples/{ => tests/valid}/plugins/permission-boundary.js (100%) rename examples/{ => tests/valid}/plugins/replicate-s3.js (100%) rename examples/{ => tests/valid}/plugins/tf-backend.js (100%) diff --git a/examples/plugins/app.w b/examples/tests/valid/plugins/app.w similarity index 100% rename from examples/plugins/app.w rename to examples/tests/valid/plugins/app.w diff --git a/examples/plugins/permission-boundary.js b/examples/tests/valid/plugins/permission-boundary.js similarity index 100% rename from examples/plugins/permission-boundary.js rename to examples/tests/valid/plugins/permission-boundary.js diff --git a/examples/plugins/replicate-s3.js b/examples/tests/valid/plugins/replicate-s3.js similarity index 100% rename from examples/plugins/replicate-s3.js rename to examples/tests/valid/plugins/replicate-s3.js diff --git a/examples/plugins/tf-backend.js b/examples/tests/valid/plugins/tf-backend.js similarity index 100% rename from examples/plugins/tf-backend.js rename to examples/tests/valid/plugins/tf-backend.js diff --git a/libs/wingsdk/src/core/plugin-manager.ts b/libs/wingsdk/src/core/plugin-manager.ts index db3ab744219..d6bae5a07e4 100644 --- a/libs/wingsdk/src/core/plugin-manager.ts +++ b/libs/wingsdk/src/core/plugin-manager.ts @@ -61,8 +61,16 @@ export class PluginManager { const pluginDir = dirname(pluginAbsolutePath); + const modulePaths = module.paths ?? [__dirname]; + + const requireResolve = (path: string) => + require.resolve(path, { paths: [...modulePaths, pluginDir] }); + // eslint-disable-next-line @typescript-eslint/no-require-imports + const pluginRequire = (path: string) => require(requireResolve(path)); + pluginRequire.resolve = requireResolve; + const context = vm.createContext({ - require, + require: pluginRequire, console, exports: hooks, process, diff --git a/tools/hangar/package-lock.json b/tools/hangar/package-lock.json index c0a0c0f951c..58fe6366321 100644 --- a/tools/hangar/package-lock.json +++ b/tools/hangar/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.0", "license": "Apache-2.0", "devDependencies": { - "@cdktf/provider-aws": "^12.0.13", + "cdktf": "^0.17.0", "execa": "^7.1.1", "npm": "^9.6.4", "tsx": "^3.12.6", @@ -17,19 +17,6 @@ "yaml": "^2.2.1" } }, - "node_modules/@cdktf/provider-aws": { - "version": "12.0.13", - "resolved": "https://registry.npmjs.org/@cdktf/provider-aws/-/provider-aws-12.0.13.tgz", - "integrity": "sha512-uGayQpfVsxPYbsTrxM1p/9mtb6MbrrFqWHgHqLyhoOUzHqunwTtoGrcJJtkPZJwqHUdkZwK3OWwEYy7RtD2dow==", - "dev": true, - "engines": { - "node": ">= 14.17.0" - }, - "peerDependencies": { - "cdktf": "^0.15.0", - "constructs": "^10.0.0" - } - }, "node_modules/@esbuild-kit/cjs-loader": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.2.tgz", @@ -566,16 +553,15 @@ } }, "node_modules/cdktf": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/cdktf/-/cdktf-0.15.5.tgz", - "integrity": "sha512-fcamLs7SKz+kTbQFf+fOXDGvmwT5bH4bHwp+jkVKjGTRsu6C8z5oFVAjKYm+aP1tC7sSWG967+ihSx6+uPNAGw==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/cdktf/-/cdktf-0.17.0.tgz", + "integrity": "sha512-4R57uBLBqeb8NgfKZdn/az8UE3yXxGHyzH6Xjsz1Oo9kNvSkPibX7YqNLUpuCgdYNVgU2fdaNoHj9h4LXc6iCw==", "bundleDependencies": [ "archiver", "json-stable-stringify", "semver" ], "dev": true, - "peer": true, "dependencies": { "archiver": "5.3.1", "json-stable-stringify": "^1.0.2", @@ -590,7 +576,6 @@ "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "archiver-utils": "^2.1.0", "async": "^3.2.3", @@ -609,7 +594,6 @@ "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "glob": "^7.1.4", "graceful-fs": "^4.2.0", @@ -631,7 +615,6 @@ "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -647,7 +630,6 @@ "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -656,15 +638,13 @@ "version": "3.2.4", "dev": true, "inBundle": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/cdktf/node_modules/balanced-match": { "version": "1.0.2", "dev": true, "inBundle": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/cdktf/node_modules/base64-js": { "version": "1.5.1", @@ -684,15 +664,13 @@ } ], "inBundle": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/cdktf/node_modules/bl": { "version": "4.1.0", "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -704,7 +682,6 @@ "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -728,7 +705,6 @@ ], "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -739,7 +715,6 @@ "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "engines": { "node": "*" } @@ -749,7 +724,6 @@ "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "buffer-crc32": "^0.2.13", "crc32-stream": "^4.0.2", @@ -764,22 +738,19 @@ "version": "0.0.1", "dev": true, "inBundle": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/cdktf/node_modules/core-util-is": { "version": "1.0.3", "dev": true, "inBundle": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/cdktf/node_modules/crc-32": { "version": "1.2.2", "dev": true, "inBundle": true, "license": "Apache-2.0", - "peer": true, "bin": { "crc32": "bin/crc32.njs" }, @@ -792,7 +763,6 @@ "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "crc-32": "^1.2.0", "readable-stream": "^3.4.0" @@ -806,7 +776,6 @@ "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "once": "^1.4.0" } @@ -815,22 +784,19 @@ "version": "1.0.0", "dev": true, "inBundle": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/cdktf/node_modules/fs.realpath": { "version": "1.0.0", "dev": true, "inBundle": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/cdktf/node_modules/glob": { "version": "7.2.3", "dev": true, "inBundle": true, "license": "ISC", - "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -851,7 +817,6 @@ "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -862,7 +827,6 @@ "dev": true, "inBundle": true, "license": "ISC", - "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -874,8 +838,7 @@ "version": "4.2.10", "dev": true, "inBundle": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/cdktf/node_modules/ieee754": { "version": "1.2.1", @@ -895,15 +858,13 @@ } ], "inBundle": true, - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/cdktf/node_modules/inflight": { "version": "1.0.6", "dev": true, "inBundle": true, "license": "ISC", - "peer": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -913,22 +874,19 @@ "version": "2.0.4", "dev": true, "inBundle": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/cdktf/node_modules/isarray": { "version": "1.0.0", "dev": true, "inBundle": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/cdktf/node_modules/json-stable-stringify": { "version": "1.0.2", "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "jsonify": "^0.0.1" }, @@ -941,7 +899,6 @@ "dev": true, "inBundle": true, "license": "Public Domain", - "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -951,7 +908,6 @@ "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "readable-stream": "^2.0.5" }, @@ -964,7 +920,6 @@ "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -980,7 +935,6 @@ "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -989,43 +943,37 @@ "version": "4.2.0", "dev": true, "inBundle": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/cdktf/node_modules/lodash.difference": { "version": "4.5.0", "dev": true, "inBundle": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/cdktf/node_modules/lodash.flatten": { "version": "4.4.0", "dev": true, "inBundle": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/cdktf/node_modules/lodash.isplainobject": { "version": "4.0.6", "dev": true, "inBundle": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/cdktf/node_modules/lodash.union": { "version": "4.6.0", "dev": true, "inBundle": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/cdktf/node_modules/lru-cache": { "version": "6.0.0", "dev": true, "inBundle": true, "license": "ISC", - "peer": true, "dependencies": { "yallist": "^4.0.0" }, @@ -1038,7 +986,6 @@ "dev": true, "inBundle": true, "license": "ISC", - "peer": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -1051,7 +998,6 @@ "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -1061,7 +1007,6 @@ "dev": true, "inBundle": true, "license": "ISC", - "peer": true, "dependencies": { "wrappy": "1" } @@ -1071,7 +1016,6 @@ "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -1080,15 +1024,13 @@ "version": "2.0.1", "dev": true, "inBundle": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/cdktf/node_modules/readable-stream": { "version": "3.6.0", "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -1103,7 +1045,6 @@ "dev": true, "inBundle": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "minimatch": "^5.1.0" } @@ -1112,15 +1053,13 @@ "version": "5.1.2", "dev": true, "inBundle": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/cdktf/node_modules/semver": { "version": "7.3.8", "dev": true, "inBundle": true, "license": "ISC", - "peer": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -1136,7 +1075,6 @@ "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "safe-buffer": "~5.2.0" } @@ -1159,15 +1097,13 @@ } ], "inBundle": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/cdktf/node_modules/tar-stream": { "version": "2.2.0", "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -1183,29 +1119,25 @@ "version": "1.0.2", "dev": true, "inBundle": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/cdktf/node_modules/wrappy": { "version": "1.0.2", "dev": true, "inBundle": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/cdktf/node_modules/yallist": { "version": "4.0.0", "dev": true, "inBundle": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/cdktf/node_modules/zip-stream": { "version": "4.1.0", "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "archiver-utils": "^2.1.0", "compress-commons": "^4.1.0", @@ -1262,9 +1194,9 @@ } }, "node_modules/constructs": { - "version": "10.2.55", - "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.2.55.tgz", - "integrity": "sha512-TjH8BRN9qpmjZqq0ixH1NqgPHam0tQJcMQ6puffM0Sj0dRPXaJAzOtbHpn24rhjE+90vIQ8jBAUO8v8Sdp1uAQ==", + "version": "10.2.60", + "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.2.60.tgz", + "integrity": "sha512-rO9EHXhUZpA1Gz5wk5ewCVaol6anSilDzS7uv4Fmgx+tKTcxchAl10z8ObjZMjcQYNw+5FBVIzSagSKJanbHdQ==", "dev": true, "peer": true, "engines": { @@ -5447,13 +5379,6 @@ } }, "dependencies": { - "@cdktf/provider-aws": { - "version": "12.0.13", - "resolved": "https://registry.npmjs.org/@cdktf/provider-aws/-/provider-aws-12.0.13.tgz", - "integrity": "sha512-uGayQpfVsxPYbsTrxM1p/9mtb6MbrrFqWHgHqLyhoOUzHqunwTtoGrcJJtkPZJwqHUdkZwK3OWwEYy7RtD2dow==", - "dev": true, - "requires": {} - }, "@esbuild-kit/cjs-loader": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.2.tgz", @@ -5768,11 +5693,10 @@ "dev": true }, "cdktf": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/cdktf/-/cdktf-0.15.5.tgz", - "integrity": "sha512-fcamLs7SKz+kTbQFf+fOXDGvmwT5bH4bHwp+jkVKjGTRsu6C8z5oFVAjKYm+aP1tC7sSWG967+ihSx6+uPNAGw==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/cdktf/-/cdktf-0.17.0.tgz", + "integrity": "sha512-4R57uBLBqeb8NgfKZdn/az8UE3yXxGHyzH6Xjsz1Oo9kNvSkPibX7YqNLUpuCgdYNVgU2fdaNoHj9h4LXc6iCw==", "dev": true, - "peer": true, "requires": { "archiver": "5.3.1", "json-stable-stringify": "^1.0.2", @@ -5783,7 +5707,6 @@ "version": "5.3.1", "bundled": true, "dev": true, - "peer": true, "requires": { "archiver-utils": "^2.1.0", "async": "^3.2.3", @@ -5798,7 +5721,6 @@ "version": "2.1.0", "bundled": true, "dev": true, - "peer": true, "requires": { "glob": "^7.1.4", "graceful-fs": "^4.2.0", @@ -5816,7 +5738,6 @@ "version": "2.3.7", "bundled": true, "dev": true, - "peer": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -5831,7 +5752,6 @@ "version": "1.1.1", "bundled": true, "dev": true, - "peer": true, "requires": { "safe-buffer": "~5.1.0" } @@ -5841,26 +5761,22 @@ "async": { "version": "3.2.4", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "balanced-match": { "version": "1.0.2", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "base64-js": { "version": "1.5.1", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "bl": { "version": "4.1.0", "bundled": true, "dev": true, - "peer": true, "requires": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -5871,7 +5787,6 @@ "version": "2.0.1", "bundled": true, "dev": true, - "peer": true, "requires": { "balanced-match": "^1.0.0" } @@ -5880,7 +5795,6 @@ "version": "5.7.1", "bundled": true, "dev": true, - "peer": true, "requires": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -5889,14 +5803,12 @@ "buffer-crc32": { "version": "0.2.13", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "compress-commons": { "version": "4.1.1", "bundled": true, "dev": true, - "peer": true, "requires": { "buffer-crc32": "^0.2.13", "crc32-stream": "^4.0.2", @@ -5907,26 +5819,22 @@ "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "core-util-is": { "version": "1.0.3", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "crc-32": { "version": "1.2.2", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "crc32-stream": { "version": "4.0.2", "bundled": true, "dev": true, - "peer": true, "requires": { "crc-32": "^1.2.0", "readable-stream": "^3.4.0" @@ -5936,7 +5844,6 @@ "version": "1.4.4", "bundled": true, "dev": true, - "peer": true, "requires": { "once": "^1.4.0" } @@ -5944,20 +5851,17 @@ "fs-constants": { "version": "1.0.0", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "fs.realpath": { "version": "1.0.0", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "glob": { "version": "7.2.3", "bundled": true, "dev": true, - "peer": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -5971,7 +5875,6 @@ "version": "1.1.11", "bundled": true, "dev": true, - "peer": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -5981,7 +5884,6 @@ "version": "3.1.2", "bundled": true, "dev": true, - "peer": true, "requires": { "brace-expansion": "^1.1.7" } @@ -5991,20 +5893,17 @@ "graceful-fs": { "version": "4.2.10", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "ieee754": { "version": "1.2.1", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "inflight": { "version": "1.0.6", "bundled": true, "dev": true, - "peer": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -6013,20 +5912,17 @@ "inherits": { "version": "2.0.4", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "isarray": { "version": "1.0.0", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "json-stable-stringify": { "version": "1.0.2", "bundled": true, "dev": true, - "peer": true, "requires": { "jsonify": "^0.0.1" } @@ -6034,14 +5930,12 @@ "jsonify": { "version": "0.0.1", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "lazystream": { "version": "1.0.1", "bundled": true, "dev": true, - "peer": true, "requires": { "readable-stream": "^2.0.5" }, @@ -6050,7 +5944,6 @@ "version": "2.3.7", "bundled": true, "dev": true, - "peer": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -6065,7 +5958,6 @@ "version": "1.1.1", "bundled": true, "dev": true, - "peer": true, "requires": { "safe-buffer": "~5.1.0" } @@ -6075,38 +5967,32 @@ "lodash.defaults": { "version": "4.2.0", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "lodash.difference": { "version": "4.5.0", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "lodash.flatten": { "version": "4.4.0", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "lodash.isplainobject": { "version": "4.0.6", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "lodash.union": { "version": "4.6.0", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "lru-cache": { "version": "6.0.0", "bundled": true, "dev": true, - "peer": true, "requires": { "yallist": "^4.0.0" } @@ -6115,7 +6001,6 @@ "version": "5.1.0", "bundled": true, "dev": true, - "peer": true, "requires": { "brace-expansion": "^2.0.1" } @@ -6123,14 +6008,12 @@ "normalize-path": { "version": "3.0.0", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "once": { "version": "1.4.0", "bundled": true, "dev": true, - "peer": true, "requires": { "wrappy": "1" } @@ -6138,20 +6021,17 @@ "path-is-absolute": { "version": "1.0.1", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "process-nextick-args": { "version": "2.0.1", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "readable-stream": { "version": "3.6.0", "bundled": true, "dev": true, - "peer": true, "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -6162,7 +6042,6 @@ "version": "1.1.2", "bundled": true, "dev": true, - "peer": true, "requires": { "minimatch": "^5.1.0" } @@ -6170,14 +6049,12 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "semver": { "version": "7.3.8", "bundled": true, "dev": true, - "peer": true, "requires": { "lru-cache": "^6.0.0" } @@ -6186,7 +6063,6 @@ "version": "1.3.0", "bundled": true, "dev": true, - "peer": true, "requires": { "safe-buffer": "~5.2.0" }, @@ -6194,8 +6070,7 @@ "safe-buffer": { "version": "5.2.1", "bundled": true, - "dev": true, - "peer": true + "dev": true } } }, @@ -6203,7 +6078,6 @@ "version": "2.2.0", "bundled": true, "dev": true, - "peer": true, "requires": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -6215,26 +6089,22 @@ "util-deprecate": { "version": "1.0.2", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "yallist": { "version": "4.0.0", "bundled": true, - "dev": true, - "peer": true + "dev": true }, "zip-stream": { "version": "4.1.0", "bundled": true, "dev": true, - "peer": true, "requires": { "archiver-utils": "^2.1.0", "compress-commons": "^4.1.0", @@ -6281,9 +6151,9 @@ } }, "constructs": { - "version": "10.2.55", - "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.2.55.tgz", - "integrity": "sha512-TjH8BRN9qpmjZqq0ixH1NqgPHam0tQJcMQ6puffM0Sj0dRPXaJAzOtbHpn24rhjE+90vIQ8jBAUO8v8Sdp1uAQ==", + "version": "10.2.60", + "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.2.60.tgz", + "integrity": "sha512-rO9EHXhUZpA1Gz5wk5ewCVaol6anSilDzS7uv4Fmgx+tKTcxchAl10z8ObjZMjcQYNw+5FBVIzSagSKJanbHdQ==", "dev": true, "peer": true }, diff --git a/tools/hangar/package.json b/tools/hangar/package.json index 7d1b7cba591..e9f071c8a68 100644 --- a/tools/hangar/package.json +++ b/tools/hangar/package.json @@ -12,11 +12,11 @@ "author": "Monada", "license": "Apache-2.0", "devDependencies": { + "cdktf": "^0.17.0", "execa": "^7.1.1", "npm": "^9.6.4", "tsx": "^3.12.6", "vitest": "^0.30.1", - "yaml": "^2.2.1", - "@cdktf/provider-aws": "^12.0.13" + "yaml": "^2.2.1" } } \ No newline at end of file diff --git a/tools/hangar/src/paths.ts b/tools/hangar/src/paths.ts index f4953228f7e..f1406b73f4d 100644 --- a/tools/hangar/src/paths.ts +++ b/tools/hangar/src/paths.ts @@ -3,8 +3,8 @@ import * as fs from "fs"; export const repoRoot = path.resolve(__dirname, "../../.."); export const testDir = path.join(repoRoot, "examples/tests"); -export const pluginsDir = path.join(repoRoot, "examples/plugins"); export const validTestDir = path.join(testDir, "valid"); +export const pluginsDir = path.join(validTestDir, "plugins"); export const sdkTests = path.join(testDir, "sdk_tests"); export const invalidTestDir = path.join(testDir, "invalid"); export const benchmarksTestDir = path.join(validTestDir, "benchmarks"); diff --git a/tools/hangar/src/plugins.test.ts b/tools/hangar/src/plugins.test.ts index a120718468d..13a2d8ad6e8 100644 --- a/tools/hangar/src/plugins.test.ts +++ b/tools/hangar/src/plugins.test.ts @@ -7,7 +7,7 @@ import { sanitize_json_paths, tfResourcesOfCount, } from "./utils"; -import * as cdktf from "cdktf"; +import { Testing } from "cdktf"; describe("Plugin examples", () => { const app = "app.w"; @@ -38,7 +38,7 @@ describe("Plugin examples", () => { expect(terraformOutput).toMatchSnapshot(); expect( - cdktf.Testing.toHaveResourceWithProperties( + Testing.toHaveResourceWithProperties( terraformOutputString, "aws_iam_role", {