diff --git a/.changeset/orange-pants-allow.md b/.changeset/orange-pants-allow.md new file mode 100644 index 0000000000..5d581b0e58 --- /dev/null +++ b/.changeset/orange-pants-allow.md @@ -0,0 +1,6 @@ +--- +"@pnpm/resolve-dependencies": patch +"pnpm": patch +--- + +Fixed some edge cases where resolving circular peer dependencies caused a dead lock [#8720](https://github.com/pnpm/pnpm/issues/8720). diff --git a/pkg-manager/resolve-dependencies/src/resolvePeers.ts b/pkg-manager/resolve-dependencies/src/resolvePeers.ts index e0e5e1fa07..54bc2c6699 100644 --- a/pkg-manager/resolve-dependencies/src/resolvePeers.ts +++ b/pkg-manager/resolve-dependencies/src/resolvePeers.ts @@ -353,7 +353,7 @@ interface ResolvePeersContext { depPathsByPkgId?: Map> } -type CalculateDepPath = (cycles: NodeId[][]) => Promise +type CalculateDepPath = (cycles: string[][]) => Promise type FinishingResolutionPromise = Promise interface ParentPkgInfo { @@ -554,13 +554,16 @@ async function resolvePeersOfNode ( async function calculateDepPath ( peerIds: PeerId[], pendingPeerNodeIds: NodeId[], - cycles: NodeId[][] + cycles: string[][] ): Promise { const cyclicPeerNodeIds = new Set() - for (const cycle of cycles) { - if (cycle.includes(nodeId)) { - for (const peerNodeId of cycle) { - cyclicPeerNodeIds.add(peerNodeId) + const node = ctx.dependenciesTree.get(nodeId) + if (node?.resolvedPackage.name != null) { + for (const cycle of cycles) { + if (cycle.includes(node.resolvedPackage.name)) { + for (const peerNodeId of cycle) { + cyclicPeerNodeIds.add(peerNodeId) + } } } } @@ -568,9 +571,9 @@ async function resolvePeersOfNode ( ...peerIds, ...await Promise.all(pendingPeerNodeIds .map(async (peerNodeId) => { - if (cyclicPeerNodeIds.has(peerNodeId)) { - const { name, version } = (ctx.dependenciesTree.get(peerNodeId)!.resolvedPackage as T) - const id = `${name}@${version}` + const peerNode = ctx.dependenciesTree.get(peerNodeId)?.resolvedPackage as T + if (peerNode && cyclicPeerNodeIds.has(peerNode.name)) { + const id = `${peerNode.name}@${peerNode.version}` ctx.pathsByNodeIdPromises.get(peerNodeId)?.resolve(id as DepPath) return id } @@ -831,18 +834,25 @@ async function resolvePeersOfChildren ( if (calculateDepPath) { calculateDepPaths.push(calculateDepPath) } - const edges = [] + const edges: string[] = [] for (const [peerName, peerNodeId] of resolvedPeers) { allResolvedPeers.set(peerName, peerNodeId) - edges.push(peerNodeId) + edges.push(peerName) + const node = ctx.dependenciesTree.get(peerNodeId) + if (node?.resolvedPackage.name && node.resolvedPackage.name !== peerName) { + edges.push(node.resolvedPackage.name) + } + } + const childNode = ctx.dependenciesTree.get(childNodeId) + if (childNode?.resolvedPackage.name != null) { + graph.push([childNode.resolvedPackage.name, edges]) } - graph.push([childNodeId, edges]) for (const [missingPeer, range] of missingPeers.entries()) { allMissingPeers.set(missingPeer, range) } } if (calculateDepPaths.length) { - const { cycles } = analyzeGraph(graph as unknown as Graph) as unknown as { cycles: NodeId[][] } + const { cycles } = analyzeGraph(graph as unknown as Graph) as unknown as { cycles: string[][] } finishingList.push(...calculateDepPaths.map((calculateDepPath) => calculateDepPath(cycles))) } const finishing = Promise.all(finishingList).then(() => {}) diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon1/package/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon1/package/package.json new file mode 100644 index 0000000000..7c366264e2 --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon1/package/package.json @@ -0,0 +1,50 @@ +{ + "name": "addon1", + "version": "1.0.0", + "dependencies": { + "addon2": "workspace:*", + "addon3": "workspace:*", + "addon6": "workspace:*", + "@ember-data/model": "~4.12.8", + "@embroider/addon-shim": "~1.8.9", + "decorator-transforms": "~2.0.0", + "ember-concurrency": "~4.0.2", + "ember-data": "~4.12.8" + }, + "devDependencies": { + "module6": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-typescript": "~7.24.7", + "@babel/runtime": "~7.23.6", + "@embroider/addon-dev": "~4.3.1", + "@glint/core": "1.4.0", + "@glint/environment-ember-loose": "1.4.0", + "@glint/environment-ember-template-imports": "1.4.0", + "@glint/template": "1.4.0", + "@rollup/plugin-babel": "~6.0.4", + "@types/ember-data": "~4.4.12", + "@types/ember-data__model": "~4.0.2", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "babel-plugin-ember-template-compilation": "~2.2.5", + "ember-cli-code-coverage": "~2.0.3", + "ember-template-lint": "~5.13.0", + "ember-source": "~4.12.4", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-import": "~2.29.1", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "prettier": "~2.8.7", + "npm-run-all": "~4.1.5", + "rollup": "~4.18.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + }, + "peerDependencies": { + "addon3": "workspace:*", + "ember-source": "~4.12.4" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon1/test-app/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon1/test-app/package.json new file mode 100644 index 0000000000..29d637fea5 --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon1/test-app/package.json @@ -0,0 +1,61 @@ +{ + "name": "test-addon1", + "version": "1.0.0", + "private": true, + "devDependencies": { + "addon1": "workspace:*", + "module6": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-class-static-block": "~7.24.7", + "@ember/optional-features": "~2.1.0", + "@ember/string": "~3.1.1", + "@ember/test-helpers": "~3.1.0", + "@embroider/broccoli-side-watch": "0.0.2-unstable.ba9fd29", + "@embroider/core": "~3.4.14", + "@embroider/compat": "~3.6.0", + "@embroider/test-setup": "~4.0.0", + "@embroider/webpack": "~4.0.4", + "@glimmer/component": "~1.1.2", + "@glimmer/tracking": "~1.1.2", + "@glint/core": "1.4.0", + "@glint/environment-ember-loose": "1.4.0", + "@glint/template": "1.4.0", + "@types/qunit": "~2.19.10", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "broccoli-asset-rev": "~3.0.0", + "ember-auto-import": "~2.7.4", + "ember-cli": "~4.12.2", + "ember-cli-app-version": "~6.0.1", + "ember-cli-babel": "~7.26.11", + "ember-cli-code-coverage": "~2.0.3", + "ember-cli-dependency-checker": "~3.3.2", + "ember-cli-htmlbars": "~6.3.0", + "ember-cli-inject-live-reload": "~2.1.0", + "ember-cli-sri": "~2.1.1", + "ember-cli-terser": "~4.0.2", + "ember-data": "~4.12.8", + "ember-load-initializers": "~2.1.2", + "ember-modifier": "~4.2.0", + "ember-qunit": "~8.1.0", + "ember-resolver": "~10.0.0", + "ember-source": "~4.12.4", + "ember-source-channel-url": "^3.0.0", + "ember-template-lint": "~5.13.0", + "ember-test-selectors": "~6.0.0", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "eslint-plugin-qunit": "~7.3.4", + "loader.js": "~4.7.0", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "qunit": "~2.21.0", + "qunit-dom": "~2.0.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon10/package/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon10/package/package.json new file mode 100644 index 0000000000..dea53cba12 --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon10/package/package.json @@ -0,0 +1,52 @@ +{ + "name": "addon10", + "version": "1.0.0", + "dependencies": { + "addon2": "workspace:*", + "addon3": "workspace:*", + "addon7": "workspace:*", + "addon13": "workspace:*", + "@ember-data/model": "~4.12.8", + "@ember-data/serializer": "~4.12.8", + "@embroider/addon-shim": "~1.8.9", + "decorator-transforms": "~2.0.0", + "ember-data": "~4.12.8" + }, + "devDependencies": { + "module5": "workspace:*", + "addon6": "workspace:*", + "module6": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-typescript": "~7.24.7", + "@babel/runtime": "~7.23.6", + "@embroider/addon-dev": "~4.3.1", + "@glint/core": "1.4.0", + "@glint/environment-ember-loose": "1.4.0", + "@glint/environment-ember-template-imports": "1.4.0", + "@glint/template": "1.4.0", + "@rollup/plugin-babel": "~6.0.4", + "@types/ember-data": "~4.4.12", + "@types/ember-data__adapter": "~4.0.3", + "@types/ember-data__model": "~4.0.2", + "@types/ember-data__serializer": "~4.0.3", + "@types/ember-data__store": "~4.0.4", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "babel-plugin-ember-template-compilation": "~2.2.5", + "ember-cli-code-coverage": "~2.0.3", + "ember-template-lint": "~5.13.0", + "ember-source": "~4.12.4", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-import": "~2.29.1", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "prettier": "~2.8.7", + "npm-run-all": "~4.1.5", + "rollup": "~4.18.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon10/test-app/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon10/test-app/package.json new file mode 100644 index 0000000000..e2093aa9da --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon10/test-app/package.json @@ -0,0 +1,62 @@ +{ + "name": "test-addon10", + "version": "0.0.0", + "private": true, + "devDependencies": { + "module5": "workspace:*", + "addon6": "workspace:*", + "module6": "workspace:*", + "addon10": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-class-static-block": "~7.24.7", + "@ember/optional-features": "~2.1.0", + "@ember/string": "~3.1.1", + "@ember/test-helpers": "~3.1.0", + "@embroider/broccoli-side-watch": "0.0.2-unstable.ba9fd29", + "@embroider/core": "~3.4.14", + "@embroider/compat": "~3.6.0", + "@embroider/test-setup": "~4.0.0", + "@embroider/webpack": "~4.0.4", + "@glimmer/component": "~1.1.2", + "@glimmer/tracking": "~1.1.2", + "@glint/environment-ember-loose": "^1.4.0", + "@glint/template": "^1.4.0", + "@types/qunit": "~2.19.10", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "broccoli-asset-rev": "~3.0.0", + "ember-auto-import": "~2.7.4", + "ember-cli": "~4.12.2", + "ember-cli-app-version": "~6.0.1", + "ember-cli-babel": "~7.26.11", + "ember-cli-code-coverage": "~2.0.3", + "ember-cli-dependency-checker": "~3.3.2", + "ember-cli-htmlbars": "~6.3.0", + "ember-cli-inject-live-reload": "~2.1.0", + "ember-cli-sri": "~2.1.1", + "ember-cli-terser": "~4.0.2", + "ember-data": "~4.12.8", + "ember-load-initializers": "~2.1.2", + "ember-modifier": "~4.2.0", + "ember-qunit": "~8.1.0", + "ember-resolver": "~10.0.0", + "ember-source": "~4.12.4", + "ember-source-channel-url": "^3.0.0", + "ember-template-lint": "~5.13.0", + "ember-test-selectors": "~6.0.0", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "eslint-plugin-qunit": "~7.3.4", + "loader.js": "~4.7.0", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "qunit": "~2.21.0", + "qunit-dom": "~2.0.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon11/package/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon11/package/package.json new file mode 100644 index 0000000000..d4e64998e7 --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon11/package/package.json @@ -0,0 +1,46 @@ +{ + "name": "addon11", + "version": "1.0.0", + "dependencies": { + "@ember/render-modifiers": "~2.1.0", + "@embroider/addon-shim": "~1.8.9", + "decorator-transforms": "~2.0.0", + "ember-concurrency": "~4.0.2", + "ember-get-config": "^2.1.1" + }, + "devDependencies": { + "module6": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-typescript": "~7.24.7", + "@babel/runtime": "~7.23.6", + "@embroider/addon-dev": "~4.3.1", + "@glimmer/component": "~1.1.2", + "@glimmer/tracking": "~1.1.2", + "@glint/core": "1.4.0", + "@glint/environment-ember-loose": "1.4.0", + "@glint/environment-ember-template-imports": "1.4.0", + "@glint/template": "1.4.0", + "@rollup/plugin-babel": "~6.0.4", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "babel-plugin-ember-template-compilation": "~2.2.5", + "ember-cli-code-coverage": "~2.0.3", + "ember-template-lint": "~5.13.0", + "ember-source": "~4.12.4", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-import": "~2.29.1", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "prettier": "~2.8.7", + "npm-run-all": "~4.1.5", + "rollup": "~4.18.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + }, + "peerDependencies": { + "ember-source": "~4.12.4" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon11/test-app/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon11/test-app/package.json new file mode 100644 index 0000000000..96009d8aac --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon11/test-app/package.json @@ -0,0 +1,73 @@ +{ + "name": "test-addon11", + "version": "1.0.0", + "private": true, + "devDependencies": { + "module3": "workspace:*", + "module6": "workspace:*", + "addon11": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-class-static-block": "~7.24.7", + "@ember/optional-features": "~2.1.0", + "@ember/render-modifiers": "~2.1.0", + "@ember/string": "~3.1.1", + "@ember/test-helpers": "~3.1.0", + "@embroider/broccoli-side-watch": "0.0.2-unstable.ba9fd29", + "@embroider/core": "~3.4.14", + "@embroider/compat": "~3.6.0", + "@embroider/test-setup": "~4.0.0", + "@embroider/webpack": "~4.0.4", + "@glimmer/component": "~1.1.2", + "@glimmer/tracking": "~1.1.2", + "@glint/core": "1.4.0", + "@glint/environment-ember-loose": "1.4.0", + "@glint/template": "1.4.0", + "@types/qunit": "~2.19.10", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "broccoli-asset-rev": "~3.0.0", + "css-loader": "~7.1.2", + "ember-auto-import": "~2.7.4", + "ember-cli": "~4.12.2", + "ember-cli-app-version": "~6.0.1", + "ember-cli-babel": "~7.26.11", + "ember-cli-code-coverage": "~2.0.3", + "ember-cli-dependency-checker": "~3.3.2", + "ember-cli-htmlbars": "~6.3.0", + "ember-cli-inject-live-reload": "~2.1.0", + "ember-cli-sri": "~2.1.1", + "ember-cli-terser": "~4.0.2", + "ember-data": "~4.12.8", + "ember-load-initializers": "~2.1.2", + "ember-modifier": "~4.2.0", + "ember-qunit": "~8.1.0", + "ember-resolver": "~10.0.0", + "ember-source": "~4.12.4", + "ember-source-channel-url": "^3.0.0", + "ember-template-lint": "~5.13.0", + "ember-test-selectors": "~6.0.0", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "eslint-plugin-qunit": "~7.3.4", + "loader.js": "~4.7.0", + "mini-css-extract-plugin": "~2.9.0", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "qunit": "~2.21.0", + "qunit-dom": "~2.0.0", + "sass-embedded": "~1.61.0", + "sass-loader": "~16.0.0", + "stylelint": "~16.2.1", + "stylelint-config-sass-guidelines": "~11.0.0", + "stylelint-config-standard": "~36.0.0", + "stylelint-order": "~6.0.4", + "stylelint-prettier": "~3.0.0", + "stylelint-scss": "~6.1.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon12/package/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon12/package/package.json new file mode 100644 index 0000000000..7c3ecc54d1 --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon12/package/package.json @@ -0,0 +1,45 @@ +{ + "name": "addon12", + "version": "1.0.0", + "dependencies": { + "@embroider/addon-shim": "~1.8.9", + "decorator-transforms": "~2.0.0", + "ember-functions-as-helper-polyfill": "^2.1.2", + "ember-lifeline": "~7.0.0", + "ember-modifier": "~4.2.0" + }, + "devDependencies": { + "module6": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-typescript": "~7.24.7", + "@babel/runtime": "~7.23.6", + "@embroider/addon-dev": "~4.3.1", + "@glint/core": "1.4.0", + "@glint/environment-ember-loose": "1.4.0", + "@glint/environment-ember-template-imports": "1.4.0", + "@glint/template": "1.4.0", + "@rollup/plugin-babel": "~6.0.4", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "babel-plugin-ember-template-compilation": "~2.2.5", + "ember-cli-code-coverage": "~2.0.3", + "ember-source": "~4.12.4", + "ember-template-lint": "~5.13.0", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-import": "~2.29.1", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "handlebars": "^4.7.7", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "rollup": "~4.18.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + }, + "peerDependencies": { + "ember-source": "~4.12.4" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon12/test-app/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon12/test-app/package.json new file mode 100644 index 0000000000..3cb24b945b --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon12/test-app/package.json @@ -0,0 +1,61 @@ +{ + "name": "test-addon12", + "version": "0.0.0", + "private": true, + "devDependencies": { + "module6": "workspace:*", + "addon12": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-class-static-block": "~7.24.7", + "@ember/optional-features": "~2.1.0", + "@ember/string": "~3.1.1", + "@ember/test-helpers": "~3.1.0", + "@embroider/broccoli-side-watch": "0.0.2-unstable.ba9fd29", + "@embroider/core": "~3.4.14", + "@embroider/compat": "~3.6.0", + "@embroider/test-setup": "~4.0.0", + "@embroider/webpack": "~4.0.4", + "@glimmer/component": "~1.1.2", + "@glimmer/tracking": "~1.1.2", + "@glint/environment-ember-loose": "^1.4.0", + "@glint/template": "^1.4.0", + "@types/qunit": "~2.19.10", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "broccoli-asset-rev": "~3.0.0", + "ember-auto-import": "~2.7.4", + "ember-cli": "~4.12.2", + "ember-cli-app-version": "~6.0.1", + "ember-cli-babel": "~7.26.11", + "ember-cli-code-coverage": "~2.0.3", + "ember-cli-dependency-checker": "~3.3.2", + "ember-cli-htmlbars": "~6.3.0", + "ember-cli-inject-live-reload": "~2.1.0", + "ember-cli-sri": "~2.1.1", + "ember-cli-terser": "~4.0.2", + "ember-concurrency": "~4.0.2", + "ember-data": "~4.12.8", + "ember-load-initializers": "~2.1.2", + "ember-modifier": "~4.2.0", + "ember-qunit": "~8.1.0", + "ember-resolver": "~10.0.0", + "ember-source": "~4.12.4", + "ember-source-channel-url": "^3.0.0", + "ember-template-lint": "~5.13.0", + "ember-test-selectors": "~6.0.0", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "eslint-plugin-qunit": "~7.3.4", + "loader.js": "~4.7.0", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "qunit": "~2.21.0", + "qunit-dom": "~2.0.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon13/package/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon13/package/package.json new file mode 100644 index 0000000000..a685307599 --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon13/package/package.json @@ -0,0 +1,83 @@ +{ + "name": "addon13", + "version": "1.0.0", + "dependencies": { + "addon2": "workspace:*", + "addon3": "workspace:*", + "module3": "workspace:*", + "addon6": "workspace:*", + "addon7": "workspace:*", + "addon11": "workspace:*", + "addon12": "workspace:*", + "@ember/render-modifiers": "~2.1.0", + "@embroider/addon-shim": "~1.8.9", + "date-fns": "2.29.3", + "date-fns-tz": "~2.0.1", + "decorator-transforms": "~2.0.0", + "ember-click-outside": "~5.0.1", + "ember-concurrency": "~4.0.2", + "ember-data": "~4.12.8", + "ember-event-helpers": "~0.1.1", + "ember-focus-trap": "~0.6.0", + "ember-functions-as-helper-polyfill": "^2.1.2", + "ember-lifeline": "~7.0.0", + "ember-modifier": "~4.2.0", + "ember-noop": "~1.0.0", + "ember-promise-helpers": "~2.0.0", + "ember-responsive": "~5.0.0", + "pikaday": "^1.8.0", + "popper.js": "~1.16.1" + }, + "devDependencies": { + "module5": "workspace:*", + "module6": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-typescript": "~7.24.7", + "@babel/runtime": "~7.23.6", + "@embroider/addon-dev": "~4.3.1", + "@glimmer/component": "~1.1.2", + "@glimmer/tracking": "~1.1.2", + "@glint/core": "1.4.0", + "@glint/environment-ember-loose": "1.4.0", + "@glint/environment-ember-template-imports": "1.4.0", + "@glint/template": "1.4.0", + "@rollup/plugin-babel": "~6.0.4", + "@types/ember-data": "~4.4.12", + "@types/ember-data__adapter": "~4.0.3", + "@types/ember-data__model": "~4.0.2", + "@types/ember-data__serializer": "~4.0.3", + "@types/ember-data__store": "~4.0.4", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "babel-plugin-ember-template-compilation": "~2.2.5", + "ember-cli-code-coverage": "~2.0.3", + "ember-source": "~4.12.4", + "ember-template-lint": "~5.13.0", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-import": "~2.29.1", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "handlebars": "^4.7.7", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "rollup": "~4.18.0", + "rollup-plugin-copy": "^3.5.0", + "stylelint": "~16.2.1", + "stylelint-config-sass-guidelines": "~11.0.0", + "stylelint-config-standard": "~36.0.0", + "stylelint-order": "~6.0.4", + "stylelint-prettier": "~3.0.0", + "stylelint-scss": "~6.1.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + }, + "peerDependencies": { + "addon3": "workspace:*", + "addon11": "workspace:*", + "addon12": "workspace:*", + "ember-source": "~4.12.4" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon13/test-app/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon13/test-app/package.json new file mode 100644 index 0000000000..4a4347f22e --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon13/test-app/package.json @@ -0,0 +1,98 @@ +{ + "name": "test-addon13", + "version": "1.0.0", + "private": true, + "devDependencies": { + "addon2": "workspace:*", + "module3": "workspace:*", + "module5": "workspace:*", + "addon6": "workspace:*", + "module6": "workspace:*", + "module7": "workspace:*", + "addon7": "workspace:*", + "addon13": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-class-static-block": "~7.24.7", + "@ember-data/adapter": "~4.12.8", + "@ember/optional-features": "~2.1.0", + "@ember/string": "~3.1.1", + "@ember/test-helpers": "~3.1.0", + "@embroider/broccoli-side-watch": "0.0.2-unstable.ba9fd29", + "@embroider/compat": "~3.6.0", + "@embroider/core": "~3.4.14", + "@embroider/test-setup": "~4.0.0", + "@embroider/webpack": "~4.0.4", + "@faker-js/faker": "~8.0.2", + "@glimmer/component": "~1.1.2", + "@glimmer/tracking": "~1.1.2", + "@glint/core": "1.4.0", + "@glint/environment-ember-loose": "1.4.0", + "@glint/template": "1.4.0", + "@sinonjs/fake-timers": "^6.0.1", + "@types/ember-data": "~4.4.12", + "@types/ember-data__adapter": "~4.0.3", + "@types/ember-data__model": "~4.0.2", + "@types/ember-data__serializer": "~4.0.3", + "@types/ember-data__store": "~4.0.4", + "@types/qunit": "~2.19.10", + "@types/rsvp": "~4.0.9", + "@types/sinonjs__fake-timers": "^6.0.2", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "broccoli-asset-rev": "~3.0.0", + "css-loader": "~7.1.2", + "date-fns": "2.29.3", + "date-fns-tz": "~2.0.1", + "ember-a11y-testing": "~7.0.1", + "ember-auto-import": "~2.7.4", + "ember-cli": "~4.12.2", + "ember-cli-app-version": "~6.0.1", + "ember-cli-babel": "~7.26.11", + "ember-cli-code-coverage": "~2.0.3", + "ember-cli-dependency-checker": "~3.3.2", + "ember-cli-htmlbars": "~6.3.0", + "ember-cli-inject-live-reload": "~2.1.0", + "ember-cli-mirage": "~3.0.2", + "ember-cli-sri": "~2.1.1", + "ember-cli-terser": "~4.0.2", + "ember-cli-valid-component-name": "^1.0.0", + "ember-concurrency": "~4.0.2", + "ember-data": "~4.12.8", + "ember-intl": "6.4.0", + "ember-lifeline": "~7.0.0", + "ember-load-initializers": "~2.1.2", + "ember-modifier": "~4.2.0", + "ember-percy": "~1.6.0", + "ember-qunit": "~8.1.0", + "ember-resolver": "~10.0.0", + "ember-responsive": "~5.0.0", + "ember-source": "~4.12.4", + "ember-source-channel-url": "^3.0.0", + "ember-template-lint": "~5.13.0", + "ember-test-selectors": "~6.0.0", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "eslint-plugin-qunit": "~7.3.4", + "gulp": "~4.0.2", + "loader.js": "~4.7.0", + "mini-css-extract-plugin": "~2.9.0", + "npm-run-all": "~4.1.5", + "popper.js": "~1.16.1", + "prettier": "~2.8.7", + "qunit": "~2.21.0", + "qunit-dom": "~2.0.0", + "sass-embedded": "~1.61.0", + "sass-loader": "~16.0.0", + "stylelint": "~16.2.1", + "stylelint-config-sass-guidelines": "~11.0.0", + "stylelint-config-standard": "~36.0.0", + "stylelint-order": "~6.0.4", + "stylelint-prettier": "~3.0.0", + "stylelint-scss": "~6.1.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon14/package/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon14/package/package.json new file mode 100644 index 0000000000..11385d9406 --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon14/package/package.json @@ -0,0 +1,61 @@ +{ + "name": "addon14", + "version": "1.0.0", + "dependencies": { + "addon2": "workspace:*", + "addon3": "workspace:*", + "module3": "workspace:*", + "addon6": "workspace:*", + "addon7": "workspace:*", + "addon11": "workspace:*", + "addon12": "workspace:*", + "addon13": "workspace:*", + "@embroider/addon-shim": "~1.8.9", + "decorator-transforms": "~2.0.0", + "ember-concurrency": "~4.0.2", + "ember-lifeline": "~7.0.0", + "tracked-built-ins": "~3.3.0", + "webrtc-adapter": "8.1.2" + }, + "devDependencies": { + "module5": "workspace:*", + "module6": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-typescript": "~7.24.7", + "@babel/runtime": "~7.23.6", + "@embroider/addon-dev": "~4.3.1", + "@glimmer/component": "~1.1.2", + "@glimmer/tracking": "~1.1.2", + "@glint/core": "1.4.0", + "@glint/environment-ember-loose": "1.4.0", + "@glint/environment-ember-template-imports": "1.4.0", + "@glint/template": "1.4.0", + "@rollup/plugin-babel": "~6.0.4", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "babel-plugin-ember-template-compilation": "~2.2.5", + "ember-cli-code-coverage": "~2.0.3", + "ember-source": "~4.12.4", + "ember-template-lint": "~5.13.0", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-import": "~2.29.1", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "handlebars": "^4.7.7", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "rollup": "~4.18.0", + "rollup-plugin-copy": "^3.5.0", + "stylelint": "~16.2.1", + "stylelint-config-sass-guidelines": "~11.0.0", + "stylelint-config-standard": "~36.0.0", + "stylelint-order": "~6.0.4", + "stylelint-prettier": "~3.0.0", + "stylelint-scss": "~6.1.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon14/test-app/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon14/test-app/package.json new file mode 100644 index 0000000000..e5bbf4eaf8 --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon14/test-app/package.json @@ -0,0 +1,88 @@ +{ + "name": "test-addon14", + "version": "1.0.0", + "private": true, + "devDependencies": { + "addon2": "workspace:*", + "module3": "workspace:*", + "addon3": "workspace:*", + "module5": "workspace:*", + "addon6": "workspace:*", + "module6": "workspace:*", + "module7": "workspace:*", + "addon7": "workspace:*", + "addon13": "workspace:*", + "addon14": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-class-static-block": "~7.24.7", + "@ember/optional-features": "~2.1.0", + "@ember/string": "~3.1.1", + "@ember/test-helpers": "~3.1.0", + "@ember-data/adapter": "~4.12.8", + "@embroider/broccoli-side-watch": "0.0.2-unstable.ba9fd29", + "@embroider/core": "~3.4.14", + "@embroider/compat": "~3.6.0", + "@embroider/test-setup": "~4.0.0", + "@embroider/webpack": "~4.0.4", + "@faker-js/faker": "~8.0.2", + "@glimmer/component": "~1.1.2", + "@glimmer/tracking": "~1.1.2", + "@glint/core": "1.4.0", + "@glint/environment-ember-loose": "1.4.0", + "@glint/template": "1.4.0", + "@types/qunit": "~2.19.10", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "broccoli-asset-rev": "~3.0.0", + "css-loader": "~7.1.2", + "ember-a11y-testing": "~7.0.1", + "ember-auto-import": "~2.7.4", + "ember-cli": "~4.12.2", + "ember-cli-app-version": "~6.0.1", + "ember-cli-babel": "~7.26.11", + "ember-cli-code-coverage": "~2.0.3", + "ember-cli-dependency-checker": "~3.3.2", + "ember-cli-htmlbars": "~6.3.0", + "ember-cli-inject-live-reload": "~2.1.0", + "ember-cli-sri": "~2.1.1", + "ember-cli-terser": "~4.0.2", + "ember-cli-valid-component-name": "^1.0.0", + "ember-concurrency": "~4.0.2", + "ember-intl": "6.4.0", + "ember-load-initializers": "~2.1.2", + "ember-modifier": "~4.2.0", + "ember-qunit": "~8.1.0", + "ember-resolver": "~10.0.0", + "ember-responsive": "~5.0.0", + "ember-source": "~4.12.4", + "ember-source-channel-url": "^3.0.0", + "ember-template-lint": "~5.13.0", + "ember-test-selectors": "~6.0.0", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "eslint-plugin-qunit": "~7.3.4", + "gulp": "~4.0.2", + "loader.js": "~4.7.0", + "mini-css-extract-plugin": "~2.9.0", + "npm-run-all": "~4.1.5", + "popper.js": "~1.16.1", + "prettier": "~2.8.7", + "qunit": "~2.21.0", + "qunit-dom": "~2.0.0", + "sass-embedded": "~1.61.0", + "sass-loader": "~16.0.0", + "stylelint": "~16.2.1", + "stylelint-config-sass-guidelines": "~11.0.0", + "stylelint-config-standard": "~36.0.0", + "stylelint-order": "~6.0.4", + "stylelint-prettier": "~3.0.0", + "stylelint-scss": "~6.1.0", + "typescript": "5.3.3", + "webpack": "~5.94.0", + "webrtc-adapter": "8.1.2" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon15/package/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon15/package/package.json new file mode 100644 index 0000000000..19013c000b --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon15/package/package.json @@ -0,0 +1,68 @@ +{ + "name": "addon15", + "version": "1.0.0", + "dependencies": { + "addon2": "workspace:*", + "addon3": "workspace:*", + "module3": "workspace:*", + "addon6": "workspace:*", + "addon7": "workspace:*", + "addon11": "workspace:*", + "addon12": "workspace:*", + "addon13": "workspace:*", + "@ember/render-modifiers": "2.1.0", + "@embroider/addon-shim": "~1.8.9", + "decorator-transforms": "~2.0.0", + "ember-concurrency": "~4.0.2", + "ember-element-helper": "^0.8.5", + "ember-lifeline": "~7.0.0", + "ember-modifier": "~4.2.0" + }, + "devDependencies": { + "module5": "workspace:*", + "module6": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-typescript": "~7.24.7", + "@babel/runtime": "~7.23.6", + "@embroider/addon-dev": "~4.3.1", + "@glimmer/component": "~1.1.2", + "@glimmer/tracking": "~1.1.2", + "@glint/core": "1.4.0", + "@glint/environment-ember-loose": "1.4.0", + "@glint/template": "1.4.0", + "@rollup/plugin-babel": "~6.0.4", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "babel-plugin-ember-template-compilation": "~2.2.5", + "ember-cli-code-coverage": "~2.0.3", + "ember-source": "~4.12.4", + "ember-template-lint": "~5.13.0", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-import": "~2.29.1", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "handlebars": "^4.7.7", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "rollup": "~4.18.0", + "rollup-plugin-copy": "^3.5.0", + "stylelint": "~16.2.1", + "stylelint-config-sass-guidelines": "~11.0.0", + "stylelint-config-standard": "~36.0.0", + "stylelint-order": "~6.0.4", + "stylelint-prettier": "~3.0.0", + "stylelint-scss": "~6.1.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + }, + "peerDependencies": { + "addon3": "workspace:*", + "addon11": "workspace:*", + "addon12": "workspace:*", + "addon13": "workspace:*", + "ember-source": "~4.12.4" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon15/test-app/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon15/test-app/package.json new file mode 100644 index 0000000000..2b8eed3ca1 --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon15/test-app/package.json @@ -0,0 +1,106 @@ +{ + "name": "test-addon15", + "version": "1.0.0", + "private": true, + "devDependencies": { + "addon2": "workspace:*", + "addon3": "workspace:*", + "module3": "workspace:*", + "module5": "workspace:*", + "addon6": "workspace:*", + "module6": "workspace:*", + "module7": "workspace:*", + "module9": "workspace:*", + "addon7": "workspace:*", + "addon11": "workspace:*", + "addon12": "workspace:*", + "addon13": "workspace:*", + "addon15": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-class-static-block": "~7.24.7", + "@ember-data/adapter": "~4.12.8", + "@ember/optional-features": "~2.1.0", + "@ember/string": "~3.1.1", + "@ember/test-helpers": "~3.1.0", + "@embroider/broccoli-side-watch": "0.0.2-unstable.ba9fd29", + "@embroider/compat": "~3.6.0", + "@embroider/core": "~3.4.14", + "@embroider/test-setup": "~4.0.0", + "@embroider/webpack": "~4.0.4", + "@faker-js/faker": "~8.0.2", + "@glimmer/component": "~1.1.2", + "@glimmer/tracking": "~1.1.2", + "@glint/environment-ember-loose": "^1.4.0", + "@glint/core": "1.4.0", + "@glint/template": "1.4.0", + "@sinonjs/fake-timers": "^6.0.1", + "@types/ember-data": "~4.4.12", + "@types/ember-data__adapter": "~4.0.3", + "@types/ember-data__model": "~4.0.2", + "@types/ember-data__serializer": "~4.0.3", + "@types/ember-data__store": "~4.0.4", + "@types/qunit": "~2.19.10", + "@types/rsvp": "~4.0.9", + "@types/sinonjs__fake-timers": "^6.0.2", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "body-parser": "^1.15.1", + "broccoli-asset-rev": "~3.0.0", + "css-loader": "~7.1.2", + "ember-a11y-testing": "~7.0.1", + "ember-auto-import": "~2.7.4", + "ember-cli": "~4.12.2", + "ember-cli-app-version": "~6.0.1", + "ember-cli-babel": "~7.26.11", + "ember-cli-code-coverage": "~2.0.3", + "ember-cli-dependency-checker": "~3.3.2", + "ember-cli-htmlbars": "~6.3.0", + "ember-cli-inject-live-reload": "~2.1.0", + "ember-cli-pretender": "^1.0.1", + "ember-cli-sri": "~2.1.1", + "ember-cli-terser": "~4.0.2", + "ember-cli-testem-http-mocks": "0.3.0", + "ember-concurrency": "~4.0.2", + "ember-intl": "6.4.0", + "ember-lifeline": "~7.0.0", + "ember-load-initializers": "~2.1.2", + "ember-maybe-import-regenerator": "^0.1.6", + "ember-modifier": "~4.2.0", + "ember-percy": "~1.6.0", + "ember-qunit": "~8.1.0", + "ember-resolver": "~10.0.0", + "ember-responsive": "~5.0.0", + "ember-sinon": "^1.0.0", + "ember-source": "~4.12.4", + "ember-source-channel-url": "^3.0.0", + "ember-template-lint": "~5.13.0", + "ember-test-selectors": "~6.0.0", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "eslint-plugin-qunit": "~7.3.4", + "express": "^4.13.4", + "glob": "^4.5.3", + "gulp": "~4.0.2", + "loader.js": "~4.7.0", + "mini-css-extract-plugin": "~2.9.0", + "morgan": "^1.7.0", + "npm-run-all": "~4.1.5", + "popper.js": "~1.16.1", + "prettier": "~2.8.7", + "qunit": "~2.21.0", + "qunit-dom": "~2.0.0", + "sass-embedded": "~1.61.0", + "sass-loader": "~16.0.0", + "stylelint": "~16.2.1", + "stylelint-config-sass-guidelines": "~11.0.0", + "stylelint-config-standard": "~36.0.0", + "stylelint-order": "~6.0.4", + "stylelint-prettier": "~3.0.0", + "stylelint-scss": "~6.1.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon2/package/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon2/package/package.json new file mode 100644 index 0000000000..be04e847fa --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon2/package/package.json @@ -0,0 +1,42 @@ +{ + "name": "addon2", + "version": "1.0.0", + "dependencies": { + "addon6": "workspace:*", + "@ember/test-waiters": "^3.0.2", + "@embroider/addon-shim": "~1.8.9", + "date-fns": "~2.29.3", + "decorator-transforms": "~2.0.0" + }, + "devDependencies": { + "module6": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-typescript": "~7.24.7", + "@babel/runtime": "~7.23.6", + "@embroider/addon-dev": "~4.3.1", + "@glint/core": "1.4.0", + "@glint/environment-ember-loose": "1.4.0", + "@glint/environment-ember-template-imports": "1.4.0", + "@glint/template": "1.4.0", + "@rollup/plugin-babel": "~6.0.4", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "babel-plugin-ember-template-compilation": "~2.2.5", + "ember-cli-code-coverage": "~2.0.3", + "ember-template-lint": "~5.13.0", + "ember-source": "~4.12.4", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-import": "~2.29.1", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "prettier": "~2.8.7", + "npm-run-all": "~4.1.5", + "rollup": "~4.18.0", + "rollup-plugin-copy": "^3.5.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon2/test-app/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon2/test-app/package.json new file mode 100644 index 0000000000..eca4037d11 --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon2/test-app/package.json @@ -0,0 +1,61 @@ +{ + "name": "test-addon2", + "version": "1.0.0", + "private": true, + "devDependencies": { + "addon2": "workspace:*", + "module6": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-class-static-block": "~7.24.7", + "@ember/optional-features": "~2.1.0", + "@ember/string": "~3.1.1", + "@ember/test-helpers": "~3.1.0", + "@embroider/broccoli-side-watch": "0.0.2-unstable.ba9fd29", + "@embroider/core": "~3.4.14", + "@embroider/compat": "~3.6.0", + "@embroider/test-setup": "~4.0.0", + "@embroider/webpack": "~4.0.4", + "@glimmer/component": "~1.1.2", + "@glimmer/tracking": "~1.1.2", + "@glint/environment-ember-loose": "^1.4.0", + "@glint/template": "^1.4.0", + "@types/qunit": "~2.19.10", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "broccoli-asset-rev": "~3.0.0", + "ember-auto-import": "~2.7.4", + "ember-cli": "~4.12.2", + "ember-cli-app-version": "~6.0.1", + "ember-cli-babel": "~7.26.11", + "ember-cli-code-coverage": "~2.0.3", + "ember-cli-dependency-checker": "~3.3.2", + "ember-cli-htmlbars": "~6.3.0", + "ember-cli-inject-live-reload": "~2.1.0", + "ember-cli-sri": "~2.1.1", + "ember-cli-terser": "~4.0.2", + "ember-data": "~4.12.8", + "ember-load-initializers": "~2.1.2", + "ember-modifier": "~4.2.0", + "ember-qunit": "~8.1.0", + "ember-resolver": "~10.0.0", + "ember-source": "~4.12.4", + "ember-source-channel-url": "^3.0.0", + "ember-template-lint": "~5.13.0", + "ember-sinon": "^1.0.1", + "ember-test-selectors": "~6.0.0", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "eslint-plugin-qunit": "~7.3.4", + "loader.js": "~4.7.0", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "qunit": "~2.21.0", + "qunit-dom": "~2.0.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon3/package/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon3/package/package.json new file mode 100644 index 0000000000..4ee8ef8c2e --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon3/package/package.json @@ -0,0 +1,66 @@ +{ + "name": "addon3", + "version": "1.0.0", + "dependencies": { + "addon2": "workspace:*", + "module4": "workspace:*", + "addon6": "workspace:*", + "addon7": "workspace:*", + "@ember-data/adapter": "~4.12.8", + "@ember-data/model": "~4.12.8", + "@ember-data/serializer": "~4.12.8", + "@ember/render-modifiers": "~2.1.0", + "@embroider/addon-shim": "~1.8.9", + "@sentry/ember": "7.93.0", + "@sentry/integrations": "7.93.0", + "date-fns": "~2.29.3", + "decorator-transforms": "~2.0.0", + "ember-concurrency": "~4.0.2", + "ember-data": "~4.12.8", + "ember-inflector": "~4.0.2", + "ember-lifeline": "~7.0.0" + }, + "devDependencies": { + "module6": "workspace:*", + "addon12": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-typescript": "~7.24.7", + "@babel/runtime": "~7.23.6", + "@embroider/addon-dev": "~4.3.1", + "@glimmer/component": "~1.1.2", + "@glimmer/tracking": "~1.1.2", + "@glint/core": "1.4.0", + "@glint/environment-ember-loose": "1.4.0", + "@glint/environment-ember-template-imports": "1.4.0", + "@glint/template": "1.4.0", + "@rollup/plugin-babel": "~6.0.4", + "@sentry/types": "7.93.0", + "@types/ember-data": "~4.4.12", + "@types/ember-data__adapter": "~4.0.3", + "@types/ember-data__model": "~4.0.2", + "@types/ember-data__serializer": "~4.0.3", + "@types/ember-data__store": "~4.0.4", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "babel-plugin-ember-template-compilation": "~2.2.5", + "ember-cli-code-coverage": "~2.0.3", + "ember-source": "~4.12.4", + "ember-template-lint": "~5.13.0", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-import": "~2.29.1", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "rollup": "~4.18.0", + "rollup-plugin-copy": "^3.5.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + }, + "peerDependencies": { + "ember-source": "~4.12.4" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon3/test-app/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon3/test-app/package.json new file mode 100644 index 0000000000..9ed66f52fe --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon3/test-app/package.json @@ -0,0 +1,79 @@ +{ + "name": "test-addon3", + "version": "0.0.0", + "private": true, + "devDependencies": { + "addon2": "workspace:*", + "addon3": "workspace:*", + "module6": "workspace:*", + "addon7": "workspace:*", + "addon12": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-class-static-block": "~7.24.7", + "@ember-data/adapter": "~4.12.8", + "@ember-data/model": "~4.12.8", + "@ember-data/serializer": "~4.12.8", + "@ember/optional-features": "~2.1.0", + "@ember/render-modifiers": "~2.1.0", + "@ember/string": "~3.1.1", + "@ember/test-helpers": "~3.1.0", + "@embroider/broccoli-side-watch": "0.0.2-unstable.ba9fd29", + "@embroider/compat": "~3.6.0", + "@embroider/core": "~3.4.14", + "@embroider/test-setup": "~4.0.0", + "@embroider/webpack": "~4.0.4", + "@glimmer/component": "~1.1.2", + "@glimmer/tracking": "~1.1.2", + "@glint/environment-ember-loose": "^1.4.0", + "@glint/template": "^1.4.0", + "@sinonjs/fake-timers": "^6.0.1", + "@types/ember-data": "~4.4.12", + "@types/ember-data__adapter": "~4.0.3", + "@types/ember-data__model": "~4.0.2", + "@types/ember-data__serializer": "~4.0.3", + "@types/ember-data__store": "~4.0.4", + "@types/qunit": "~2.19.10", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "broccoli-asset-rev": "~3.0.0", + "date-fns": "~2.29.3", + "ember-auto-import": "~2.7.4", + "ember-cli": "~4.12.2", + "ember-cli-app-version": "~6.0.1", + "ember-cli-babel": "~7.26.11", + "ember-cli-code-coverage": "~2.0.3", + "ember-cli-dependency-checker": "~3.3.2", + "ember-cli-htmlbars": "~6.3.0", + "ember-cli-inject-live-reload": "~2.1.0", + "ember-cli-mirage": "~3.0.2", + "ember-cli-sri": "~2.1.1", + "ember-cli-terser": "~4.0.2", + "ember-concurrency": "~4.0.2", + "ember-data": "~4.12.8", + "ember-lifeline": "~7.0.0", + "ember-load-initializers": "~2.1.2", + "ember-modifier": "~4.2.0", + "ember-qunit": "~8.1.0", + "ember-resolver": "~10.0.0", + "ember-sinon": "^2.1.0", + "ember-source": "~4.12.4", + "ember-source-channel-url": "^3.0.0", + "ember-template-lint": "~5.13.0", + "ember-test-selectors": "~6.0.0", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "eslint-plugin-qunit": "~7.3.4", + "loader.js": "~4.7.0", + "miragejs": "~0.1.48", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "qunit": "~2.21.0", + "qunit-dom": "~2.0.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon4/package/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon4/package/package.json new file mode 100644 index 0000000000..2e63a6049a --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon4/package/package.json @@ -0,0 +1,54 @@ +{ + "name": "addon4", + "version": "1.0.1", + "dependencies": { + "addon2": "workspace:*", + "addon3": "workspace:*", + "addon7": "workspace:*", + "@ember-data/adapter": "~4.12.8", + "@ember-data/model": "~4.12.8", + "@ember-data/serializer": "~4.12.8", + "@embroider/addon-shim": "^1.8.7", + "decorator-transforms": "^2.0.0", + "ember-data": "~4.12.8", + "ember-inflector": "~4.0.2" + }, + "devDependencies": { + "module6": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-typescript": "~7.24.7", + "@babel/runtime": "~7.23.6", + "@embroider/addon-dev": "~4.3.1", + "@glimmer/component": "~1.1.2", + "@glimmer/tracking": "~1.1.2", + "@glint/core": "1.4.0", + "@glint/environment-ember-loose": "1.4.0", + "@glint/environment-ember-template-imports": "1.4.0", + "@glint/template": "1.4.0", + "@rollup/plugin-babel": "~6.0.4", + "@sentry/types": "7.93.0", + "@types/ember-data": "~4.4.12", + "@types/ember-data__adapter": "~4.0.3", + "@types/ember-data__model": "~4.0.2", + "@types/ember-data__serializer": "~4.0.3", + "@types/ember-data__store": "~4.0.4", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "babel-plugin-ember-template-compilation": "~2.2.5", + "ember-cli-code-coverage": "~2.0.3", + "ember-source": "~4.12.4", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-import": "~2.29.1", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "rollup": "~4.18.0", + "rollup-plugin-copy": "^3.5.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon4/test-app/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon4/test-app/package.json new file mode 100644 index 0000000000..c918b6ff2b --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon4/test-app/package.json @@ -0,0 +1,73 @@ +{ + "name": "test-addon4", + "version": "0.0.0", + "private": true, + "devDependencies": { + "addon4": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-class-static-block": "~7.24.7", + "@ember-data/adapter": "~4.12.8", + "@ember-data/model": "~4.12.8", + "@ember-data/serializer": "~4.12.8", + "@ember/optional-features": "~2.1.0", + "@ember/render-modifiers": "~2.1.0", + "@ember/string": "~3.1.1", + "@ember/test-helpers": "~3.1.0", + "@embroider/broccoli-side-watch": "0.0.2-unstable.ba9fd29", + "@embroider/compat": "~3.6.0", + "@embroider/core": "~3.4.14", + "@embroider/test-setup": "~4.0.0", + "@embroider/webpack": "~4.0.4", + "@glimmer/component": "~1.1.2", + "@glimmer/tracking": "~1.1.2", + "@glint/environment-ember-loose": "^1.4.0", + "@glint/template": "^1.4.0", + "@sinonjs/fake-timers": "^6.0.1", + "@types/ember-data": "~4.4.12", + "@types/ember-data__adapter": "~4.0.3", + "@types/ember-data__model": "~4.0.2", + "@types/ember-data__serializer": "~4.0.3", + "@types/ember-data__store": "~4.0.4", + "@types/qunit": "~2.19.10", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "broccoli-asset-rev": "~3.0.0", + "date-fns": "~2.29.3", + "ember-auto-import": "~2.7.4", + "ember-cli": "~4.12.2", + "ember-cli-app-version": "~6.0.1", + "ember-cli-babel": "~7.26.11", + "ember-cli-code-coverage": "~2.0.3", + "ember-cli-dependency-checker": "~3.3.2", + "ember-cli-htmlbars": "~6.3.0", + "ember-cli-inject-live-reload": "~2.1.0", + "ember-cli-sri": "~2.1.1", + "ember-cli-terser": "~4.0.2", + "ember-concurrency": "~4.0.2", + "ember-data": "~4.12.8", + "ember-lifeline": "~7.0.0", + "ember-load-initializers": "~2.1.2", + "ember-modifier": "~4.2.0", + "ember-qunit": "~8.1.0", + "ember-resolver": "~10.0.0", + "ember-sinon": "^2.1.0", + "ember-source": "~4.12.4", + "ember-source-channel-url": "^3.0.0", + "ember-template-lint": "~5.13.0", + "ember-test-selectors": "~6.0.0", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "eslint-plugin-qunit": "~7.3.4", + "loader.js": "~4.7.0", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "qunit": "~2.21.0", + "qunit-dom": "~2.0.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon5/package/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon5/package/package.json new file mode 100644 index 0000000000..5fa9c79d40 --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon5/package/package.json @@ -0,0 +1,46 @@ +{ + "name": "addon5", + "version": "1.0.0", + "dependencies": { + "@ember/render-modifiers": "~2.1.0", + "@embroider/addon-shim": "~1.8.9", + "decorator-transforms": "~2.0.0", + "dragula": "^3.7.2" + }, + "devDependencies": { + "module6": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-typescript": "~7.24.7", + "@babel/runtime": "~7.23.6", + "@embroider/addon-dev": "~4.3.1", + "@glimmer/component": "~1.1.2", + "@glimmer/tracking": "~1.1.2", + "@glint/core": "1.4.0", + "@glint/environment-ember-loose": "1.4.0", + "@glint/environment-ember-template-imports": "1.4.0", + "@glint/template": "1.4.0", + "@rollup/plugin-babel": "~6.0.4", + "@types/dragula": "~3.7.1", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "babel-plugin-ember-template-compilation": "~2.2.5", + "ember-cli-code-coverage": "~2.0.3", + "ember-template-lint": "~5.13.0", + "ember-source": "~4.12.4", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-import": "~2.29.1", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "prettier": "~2.8.7", + "npm-run-all": "~4.1.5", + "rollup": "~4.18.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + }, + "peerDependencies": { + "ember-source": "~4.12.4" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon5/test-app/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon5/test-app/package.json new file mode 100644 index 0000000000..ef085c40e4 --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon5/test-app/package.json @@ -0,0 +1,86 @@ +{ + "name": "test-addon5", + "version": "1.0.0", + "private": true, + "description": "Test app for addon5 addon", + "license": "UNLICENSED", + "directories": { + "doc": "doc", + "test": "tests" + }, + "scripts": { + "lint": "pnpm --filter addon5 lint && npm-run-all --aggregate-output --continue-on-error --parallel \"lint:!(fix)\"", + "lint:fix": "npm-run-all --aggregate-output --continue-on-error --parallel lint:*:fix", + "lint:hbs": "ember-template-lint . --quiet", + "lint:hbs:fix": "ember-template-lint . --fix", + "lint:js": "eslint . --cache --quiet", + "lint:js:fix": "eslint . --fix", + "lint:ts": "glint", + "build": "ember build --environment=production", + "start": "ember server", + "test": "npm-run-all lint test:*", + "test:ember": "ember test" + }, + "devDependencies": { + "addon5": "workspace:*", + "module6": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-class-static-block": "~7.24.7", + "@ember/optional-features": "~2.1.0", + "@ember/string": "~3.1.1", + "@ember/test-helpers": "~3.1.0", + "@embroider/broccoli-side-watch": "0.0.2-unstable.ba9fd29", + "@embroider/core": "~3.4.14", + "@embroider/compat": "~3.6.0", + "@embroider/test-setup": "~4.0.0", + "@embroider/webpack": "~4.0.4", + "@glimmer/component": "~1.1.2", + "@glimmer/tracking": "~1.1.2", + "@glint/core": "1.4.0", + "@glint/environment-ember-loose": "1.4.0", + "@glint/template": "1.4.0", + "@types/qunit": "~2.19.10", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "broccoli-asset-rev": "~3.0.0", + "ember-auto-import": "~2.7.4", + "ember-cli": "~4.12.2", + "ember-cli-app-version": "~6.0.1", + "ember-cli-babel": "~7.26.11", + "ember-cli-code-coverage": "~2.0.3", + "ember-cli-dependency-checker": "~3.3.2", + "ember-cli-htmlbars": "~6.3.0", + "ember-cli-inject-live-reload": "~2.1.0", + "ember-cli-sri": "~2.1.1", + "ember-cli-terser": "~4.0.2", + "ember-data": "~4.12.8", + "ember-load-initializers": "~2.1.2", + "ember-modifier": "~4.2.0", + "ember-qunit": "~8.1.0", + "ember-resolver": "~10.0.0", + "ember-source": "~4.12.4", + "ember-source-channel-url": "^3.0.0", + "ember-template-lint": "~5.13.0", + "ember-test-selectors": "~6.0.0", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "eslint-plugin-qunit": "~7.3.4", + "loader.js": "~4.7.0", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "qunit": "~2.21.0", + "qunit-dom": "~2.0.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + }, + "engines": { + "node": ">= 18" + }, + "ember": { + "edition": "octane" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon6/package/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon6/package/package.json new file mode 100644 index 0000000000..d69a64dffb --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon6/package/package.json @@ -0,0 +1,97 @@ +{ + "name": "addon6", + "version": "1.0.0", + "description": "", + "keywords": [ + "ember-addon" + ], + "license": "UNLICENSED", + "exports": { + ".": { + "types": "./declarations/index.d.ts", + "default": "./dist/index.js" + }, + "./*": { + "types": "./declarations/*.d.ts", + "default": "./dist/*.js" + }, + "./addon-main.js": "./addon-main.cjs" + }, + "typesVersions": { + "*": { + "*": [ + "declarations/*" + ] + } + }, + "files": [ + "addon-main.cjs", + "declarations", + "dist" + ], + "scripts": { + "lint": "npm-run-all --aggregate-output --continue-on-error --parallel \"lint:!(fix)\"", + "lint:fix": "npm-run-all --aggregate-output --continue-on-error --parallel lint:*:fix", + "lint:hbs": "ember-template-lint . --quiet", + "lint:hbs:fix": "ember-template-lint . --fix", + "lint:js": "eslint . --cache --quiet", + "lint:js:fix": "eslint . --fix", + "lint:ts": "tsc --noemit", + "build": "npm-run-all build:*", + "build:js": "rollup --config", + "build:types": "glint --declaration", + "build-addon": "pnpm build", + "start": "npm-run-all start:*", + "start:js": "rollup --config --watch --no-watch.clearScreen", + "start:types": "glint --declaration --watch", + "prepack": "npm-run-all build:*" + }, + "dependencies": { + "@embroider/addon-shim": "~1.8.9", + "decorator-transforms": "~2.0.0", + "ember-lifeline": "~7.0.0" + }, + "devDependencies": { + "module6": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-typescript": "~7.24.7", + "@babel/runtime": "~7.23.6", + "@embroider/addon-dev": "~4.3.1", + "@glint/core": "1.4.0", + "@glint/environment-ember-loose": "1.4.0", + "@glint/environment-ember-template-imports": "1.4.0", + "@glint/template": "1.4.0", + "@rollup/plugin-babel": "~6.0.4", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "babel-plugin-ember-template-compilation": "~2.2.5", + "ember-cli-code-coverage": "~2.0.3", + "ember-source": "~4.12.4", + "ember-template-lint": "~5.13.0", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-import": "~2.29.1", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "rollup": "~4.18.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "ember": { + "edition": "octane" + }, + "ember-addon": { + "version": 2, + "type": "addon", + "main": "addon-main.cjs", + "app-js": { + } + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon6/test-app/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon6/test-app/package.json new file mode 100644 index 0000000000..a9d24deaf5 --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon6/test-app/package.json @@ -0,0 +1,85 @@ +{ + "name": "test-addon6", + "version": "1.0.0", + "private": true, + "description": "Test app for addon6 addon", + "license": "UNLICENSED", + "directories": { + "doc": "doc", + "test": "tests" + }, + "scripts": { + "lint": "pnpm --filter addon6 lint && npm-run-all --aggregate-output --continue-on-error --parallel \"lint:!(fix)\"", + "lint:fix": "npm-run-all --aggregate-output --continue-on-error --parallel lint:*:fix", + "lint:hbs": "ember-template-lint . --quiet", + "lint:hbs:fix": "ember-template-lint . --fix", + "lint:js": "eslint . --cache --quiet", + "lint:js:fix": "eslint . --fix", + "lint:ts": "tsc --noemit", + "build": "ember build --environment=production", + "start": "ember server", + "test": "npm-run-all lint test:*", + "test:ember": "ember test" + }, + "devDependencies": { + "addon6": "workspace:*", + "module6": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-class-static-block": "~7.24.7", + "@ember/optional-features": "~2.1.0", + "@ember/string": "~3.1.1", + "@ember/test-helpers": "~3.1.0", + "@embroider/broccoli-side-watch": "0.0.2-unstable.ba9fd29", + "@embroider/core": "~3.4.14", + "@embroider/compat": "~3.6.0", + "@embroider/test-setup": "~4.0.0", + "@embroider/webpack": "~4.0.4", + "@glimmer/component": "~1.1.2", + "@glimmer/tracking": "~1.1.2", + "@glint/environment-ember-loose": "^1.4.0", + "@glint/template": "^1.4.0", + "@types/qunit": "~2.19.10", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "broccoli-asset-rev": "~3.0.0", + "ember-auto-import": "~2.7.4", + "ember-cli": "~4.12.2", + "ember-cli-app-version": "~6.0.1", + "ember-cli-babel": "~7.26.11", + "ember-cli-code-coverage": "~2.0.3", + "ember-cli-dependency-checker": "~3.3.2", + "ember-cli-htmlbars": "~6.3.0", + "ember-cli-inject-live-reload": "~2.1.0", + "ember-cli-sri": "~2.1.1", + "ember-cli-terser": "~4.0.2", + "ember-data": "~4.12.8", + "ember-load-initializers": "~2.1.2", + "ember-modifier": "~4.2.0", + "ember-qunit": "~8.1.0", + "ember-resolver": "~10.0.0", + "ember-source": "~4.12.4", + "ember-source-channel-url": "^3.0.0", + "ember-template-lint": "~5.13.0", + "ember-test-selectors": "~6.0.0", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "eslint-plugin-qunit": "~7.3.4", + "loader.js": "~4.7.0", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "qunit": "~2.21.0", + "qunit-dom": "~2.0.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + }, + "engines": { + "node": ">= 18" + }, + "ember": { + "edition": "octane" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon7/package/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon7/package/package.json new file mode 100644 index 0000000000..71b089ed21 --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon7/package/package.json @@ -0,0 +1,98 @@ +{ + "name": "addon7", + "version": "1.0.0", + "description": "", + "keywords": [ + "ember-addon" + ], + "license": "UNLICENSED", + "exports": { + ".": { + "types": "./declarations/index.d.ts", + "default": "./dist/index.js" + }, + "./*": { + "types": "./declarations/*.d.ts", + "default": "./dist/*.js" + }, + "./addon-main.js": "./addon-main.cjs" + }, + "typesVersions": { + "*": { + "*": [ + "declarations/*" + ] + } + }, + "files": [ + "addon-main.cjs", + "declarations", + "dist" + ], + "scripts": { + "lint": "npm-run-all --aggregate-output --continue-on-error --parallel \"lint:!(fix)\"", + "lint:fix": "npm-run-all --aggregate-output --continue-on-error --parallel lint:*:fix", + "lint:hbs": "ember-template-lint . --quiet", + "lint:hbs:fix": "ember-template-lint . --fix", + "lint:js": "eslint . --cache --quiet", + "lint:js:fix": "eslint . --fix", + "lint:ts": "tsc --noemit", + "build": "npm-run-all build:*", + "build:js": "rollup --config", + "build:types": "glint --declaration", + "build-addon": "pnpm build", + "start": "npm-run-all start:*", + "start:js": "rollup --config --watch --no-watch.clearScreen", + "start:types": "glint --declaration --watch", + "prepack": "npm-run-all build:*" + }, + "dependencies": { + "@embroider/addon-shim": "~1.8.9", + "@formatjs/intl": "^2.9.9", + "decorator-transforms": "~2.0.0", + "ember-get-config": "^2.1.1", + "ember-intl": "6.4.0" + }, + "devDependencies": { + "module6": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-typescript": "~7.24.7", + "@babel/runtime": "~7.23.6", + "@embroider/addon-dev": "~4.3.1", + "@glimmer/component": "~1.1.2", + "@glimmer/tracking": "~1.1.2", + "@glint/core": "1.4.0", + "@glint/environment-ember-loose": "1.4.0", + "@glint/environment-ember-template-imports": "1.4.0", + "@glint/template": "1.4.0", + "@rollup/plugin-babel": "~6.0.4", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "babel-plugin-ember-template-compilation": "~2.2.5", + "ember-cli-code-coverage": "~2.0.3", + "ember-template-lint": "~5.13.0", + "ember-source": "~4.12.4", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-import": "~2.29.1", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "prettier": "~2.8.7", + "npm-run-all": "~4.1.5", + "rollup": "~4.18.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + }, + "ember": { + "edition": "octane" + }, + "ember-addon": { + "version": 2, + "type": "addon", + "main": "addon-main.cjs", + "app-js": { + } + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon7/test-app/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon7/test-app/package.json new file mode 100644 index 0000000000..fe626596ec --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon7/test-app/package.json @@ -0,0 +1,86 @@ +{ + "name": "test-addon7", + "version": "1.0.0", + "private": true, + "description": "Test app for addon7 addon", + "license": "UNLICENSED", + "directories": { + "doc": "doc", + "test": "tests" + }, + "scripts": { + "lint": "pnpm --filter addon7 lint && npm-run-all --aggregate-output --continue-on-error --parallel \"lint:!(fix)\"", + "lint:fix": "npm-run-all --aggregate-output --continue-on-error --parallel lint:*:fix", + "lint:hbs": "ember-template-lint . --quiet", + "lint:hbs:fix": "ember-template-lint . --fix", + "lint:js": "eslint . --cache --quiet", + "lint:js:fix": "eslint . --fix", + "lint:ts": "tsc --noemit", + "build": "ember build --environment=production", + "start": "ember server", + "test": "npm-run-all lint test:*", + "test:ember": "ember test" + }, + "devDependencies": { + "module6": "workspace:*", + "addon7": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-class-static-block": "~7.24.7", + "@ember/optional-features": "~2.1.0", + "@ember/string": "~3.1.1", + "@ember/test-helpers": "~3.1.0", + "@embroider/broccoli-side-watch": "0.0.2-unstable.ba9fd29", + "@embroider/core": "~3.4.14", + "@embroider/compat": "~3.6.0", + "@embroider/test-setup": "~4.0.0", + "@embroider/webpack": "~4.0.4", + "@glimmer/component": "~1.1.2", + "@glimmer/tracking": "~1.1.2", + "@glint/environment-ember-loose": "^1.4.0", + "@glint/template": "^1.4.0", + "@types/qunit": "~2.19.10", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "broccoli-asset-rev": "~3.0.0", + "ember-auto-import": "~2.7.4", + "ember-cli": "~4.12.2", + "ember-cli-app-version": "~6.0.1", + "ember-cli-babel": "~7.26.11", + "ember-cli-code-coverage": "~2.0.3", + "ember-cli-dependency-checker": "~3.3.2", + "ember-cli-htmlbars": "~6.3.0", + "ember-cli-inject-live-reload": "~2.1.0", + "ember-cli-sri": "~2.1.1", + "ember-cli-terser": "~4.0.2", + "ember-data": "~4.12.8", + "ember-get-config": "^2.1.1", + "ember-load-initializers": "~2.1.2", + "ember-modifier": "~4.2.0", + "ember-qunit": "~8.1.0", + "ember-resolver": "~10.0.0", + "ember-source": "~4.12.4", + "ember-source-channel-url": "^3.0.0", + "ember-template-lint": "~5.13.0", + "ember-test-selectors": "~6.0.0", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "eslint-plugin-qunit": "~7.3.4", + "loader.js": "~4.7.0", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "qunit": "~2.21.0", + "qunit-dom": "~2.0.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + }, + "engines": { + "node": ">= 18" + }, + "ember": { + "edition": "octane" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon8/package/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon8/package/package.json new file mode 100644 index 0000000000..bb54999caa --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon8/package/package.json @@ -0,0 +1,100 @@ +{ + "name": "addon8", + "version": "1.0.0", + "description": "List view addon for ember apps.", + "keywords": [ + "ember-addon" + ], + "license": "UNLICENSED", + "exports": { + ".": { + "types": "./declarations/index.d.ts", + "default": "./dist/index.js" + }, + "./*": { + "types": "./declarations/*.d.ts", + "default": "./dist/*.js" + }, + "./addon-main.js": "./addon-main.cjs", + "./*.scss": "./dist/styles/*.scss" + }, + "typesVersions": { + "*": { + "*": [ + "declarations/*" + ] + } + }, + "files": [ + "addon-main.cjs", + "declarations", + "dist" + ], + "scripts": { + "lint": "npm-run-all --aggregate-output --continue-on-error --parallel \"lint:!(fix)\"", + "lint:fix": "npm-run-all --aggregate-output --continue-on-error --parallel lint:*:fix", + "lint:hbs": "ember-template-lint . --quiet", + "lint:hbs:fix": "ember-template-lint . --fix", + "lint:js": "eslint . --cache --quiet", + "lint:js:fix": "eslint . --fix", + "lint:ts": "glint", + "lint:scss": "stylelint \"src/**/*.scss\" --quiet", + "lint:scss:fix": "stylelint \"src/**/*.scss\" --fix", + "build": "npm-run-all build:*", + "build:js": "rollup --config", + "build:types": "glint --declaration", + "build-addon": "pnpm build", + "start": "npm-run-all start:*", + "start:js": "rollup --config --watch --no-watch.clearScreen", + "start:types": "glint --declaration --watch", + "prepack": "npm-run-all build:*" + }, + "dependencies": { + "@ember/render-modifiers": "~2.1.0", + "@embroider/addon-shim": "~1.8.9", + "decorator-transforms": "~2.0.0", + "ember-concurrency": "~4.0.2", + "ember-lifeline": "~7.0.0" + }, + "devDependencies": { + "module3": "workspace:*", + "module6": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-typescript": "~7.24.7", + "@babel/runtime": "~7.23.6", + "@embroider/addon-dev": "~4.3.1", + "@glint/core": "1.4.0", + "@glint/environment-ember-loose": "1.4.0", + "@glint/environment-ember-template-imports": "1.4.0", + "@glint/template": "1.4.0", + "@rollup/plugin-babel": "~6.0.4", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "babel-plugin-ember-template-compilation": "~2.2.5", + "ember-cli-code-coverage": "~2.0.3", + "ember-source": "~4.12.4", + "ember-template-lint": "~5.13.0", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-import": "~2.29.1", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "rollup": "~4.18.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + }, + "ember": { + "edition": "octane" + }, + "ember-addon": { + "version": 2, + "type": "addon", + "main": "addon-main.cjs", + "app-js": { + } + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon8/test-app/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon8/test-app/package.json new file mode 100644 index 0000000000..4ddf72368e --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon8/test-app/package.json @@ -0,0 +1,102 @@ +{ + "name": "test-addon8", + "version": "1.0.0", + "private": true, + "description": "Test app for addon8 addon", + "license": "UNLICENSED", + "directories": { + "doc": "doc", + "test": "tests" + }, + "scripts": { + "lint": "pnpm --filter addon8 lint && npm-run-all --aggregate-output --continue-on-error --parallel \"lint:!(fix)\"", + "lint:fix": "npm-run-all --aggregate-output --continue-on-error --parallel lint:*:fix", + "lint:hbs": "ember-template-lint . --quiet", + "lint:hbs:fix": "ember-template-lint . --fix", + "lint:js": "eslint . --cache --quiet", + "lint:js:fix": "eslint . --fix", + "lint:ts": "glint", + "lint:scss": "stylelint \"app/**/*.scss\" --quiet", + "lint:scss:fix": "stylelint \"app/**/*.scss\" --fix", + "build": "ember build --environment=production", + "start": "ember server", + "test": "npm-run-all lint test:*", + "test:ember": "ember test" + }, + "devDependencies": { + "addon2": "workspace:*", + "module3": "workspace:*", + "module6": "workspace:*", + "addon8": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-class-static-block": "~7.24.7", + "@ember/optional-features": "~2.1.0", + "@ember/string": "~3.1.1", + "@ember/test-helpers": "~3.1.0", + "@embroider/broccoli-side-watch": "0.0.2-unstable.ba9fd29", + "@embroider/compat": "~3.6.0", + "@embroider/core": "~3.4.14", + "@embroider/test-setup": "~4.0.0", + "@embroider/webpack": "~4.0.4", + "@glimmer/component": "~1.1.2", + "@glimmer/tracking": "~1.1.2", + "@glint/core": "1.4.0", + "@glint/environment-ember-loose": "1.4.0", + "@glint/template": "1.4.0", + "@types/qunit": "~2.19.10", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "broccoli-asset-rev": "~3.0.0", + "css-loader": "~7.1.2", + "ember-auto-import": "~2.7.4", + "ember-cli": "~4.12.2", + "ember-cli-app-version": "~6.0.1", + "ember-cli-babel": "~7.26.11", + "ember-cli-code-coverage": "~2.0.3", + "ember-cli-dependency-checker": "~3.3.2", + "ember-cli-htmlbars": "~6.3.0", + "ember-cli-inject-live-reload": "~2.1.0", + "ember-cli-sri": "~2.1.1", + "ember-cli-terser": "~4.0.2", + "ember-concurrency": "~4.0.2", + "ember-data": "~4.12.8", + "ember-lifeline": "~7.0.0", + "ember-load-initializers": "~2.1.2", + "ember-modifier": "~4.2.0", + "ember-qunit": "~8.1.0", + "ember-resolver": "~10.0.0", + "ember-source": "~4.12.4", + "ember-source-channel-url": "^3.0.0", + "ember-template-lint": "~5.13.0", + "ember-test-selectors": "~6.0.0", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "eslint-plugin-qunit": "~7.3.4", + "loader.js": "~4.7.0", + "mini-css-extract-plugin": "~2.9.0", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "qunit": "~2.21.0", + "qunit-dom": "~2.0.0", + "sass-embedded": "~1.61.0", + "sass-loader": "~16.0.0", + "stylelint": "~16.2.1", + "stylelint-config-sass-guidelines": "~11.0.0", + "stylelint-config-standard": "~36.0.0", + "stylelint-order": "~6.0.4", + "stylelint-prettier": "~3.0.0", + "stylelint-scss": "~6.1.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + }, + "engines": { + "node": ">= 18" + }, + "ember": { + "edition": "octane" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon9/package/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon9/package/package.json new file mode 100644 index 0000000000..a515f6d4fa --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon9/package/package.json @@ -0,0 +1,130 @@ +{ + "name": "addon9", + "version": "1.0.0", + "description": "", + "keywords": [ + "ember-addon" + ], + "license": "UNLICENSED", + "exports": { + ".": { + "types": "./declarations/index.d.ts", + "default": "./dist/index.js" + }, + "./*": { + "types": "./declarations/*.d.ts", + "default": "./dist/*.js" + }, + "./addon-main.js": "./addon-main.cjs", + "./*.scss": "./dist/styles/*.scss" + }, + "typesVersions": { + "*": { + "*": [ + "declarations/*" + ] + } + }, + "files": [ + "addon-main.cjs", + "declarations", + "dist" + ], + "scripts": { + "lint": "npm-run-all --aggregate-output --continue-on-error --parallel \"lint:!(fix)\"", + "lint:fix": "npm-run-all --aggregate-output --continue-on-error --parallel lint:*:fix", + "lint:hbs": "ember-template-lint . --quiet", + "lint:hbs:fix": "ember-template-lint . --fix", + "lint:js": "eslint . --cache --quiet", + "lint:js:fix": "eslint . --fix", + "lint:ts": "glint", + "lint:scss": "stylelint \"src/**/*.scss\" --quiet", + "lint:scss:fix": "stylelint \"src/**/*.scss\" --fix", + "build": "npm-run-all build:*", + "build:js": "rollup --config", + "build:types": "glint --declaration", + "build-addon": "pnpm build", + "start": "npm-run-all start:*", + "start:js": "rollup --config --watch --no-watch.clearScreen", + "start:types": "glint --declaration --watch", + "prepack": "npm-run-all build:*" + }, + "dependencies": { + "addon2": "workspace:*", + "addon3": "workspace:*", + "module3": "workspace:*", + "addon6": "workspace:*", + "addon7": "workspace:*", + "addon13": "workspace:*", + "@ember-data/model": "~4.12.8", + "@ember-data/serializer": "~4.12.8", + "@embroider/addon-shim": "~1.8.9", + "date-fns": "~2.29.3", + "date-fns-tz": "~2.0.1", + "decorator-transforms": "~2.0.0", + "ember-concurrency": "~4.0.2", + "ember-data": "~4.12.8" + }, + "devDependencies": { + "module5": "workspace:*", + "module6": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-typescript": "~7.24.7", + "@babel/runtime": "~7.23.6", + "@embroider/addon-dev": "~4.3.1", + "@glimmer/component": "~1.1.2", + "@glimmer/tracking": "~1.1.2", + "@glint/core": "1.4.0", + "@glint/environment-ember-loose": "1.4.0", + "@glint/environment-ember-template-imports": "1.4.0", + "@glint/template": "1.4.0", + "@types/ember-data": "~4.4.12", + "@types/ember-data__adapter": "~4.0.3", + "@types/ember-data__model": "~4.0.2", + "@types/ember-data__serializer": "~4.0.3", + "@types/ember-data__store": "~4.0.4", + "@rollup/plugin-babel": "~6.0.4", + "@types/rsvp": "~4.0.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "babel-plugin-ember-template-compilation": "~2.2.5", + "ember-cli-code-coverage": "~2.0.3", + "ember-maybe-in-element": "^2.0.2", + "ember-source": "~4.12.4", + "ember-template-lint": "~5.13.0", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-import": "~2.29.1", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "handlebars": "^4.7.7", + "prettier": "~2.8.7", + "npm-run-all": "~4.1.5", + "rollup": "~4.18.0", + "rollup-plugin-copy": "^3.5.0", + "stylelint": "~16.2.1", + "stylelint-config-sass-guidelines": "~11.0.0", + "stylelint-config-standard": "~36.0.0", + "stylelint-order": "~6.0.4", + "stylelint-prettier": "~3.0.0", + "stylelint-scss": "~6.1.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + }, + "peerDependencies": { + "addon3": "workspace:*", + "addon13": "workspace:*", + "ember-source": "~4.12.4" + }, + "ember": { + "edition": "octane" + }, + "ember-addon": { + "version": 2, + "type": "addon", + "main": "addon-main.cjs", + "app-js": { + } + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon9/test-app/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon9/test-app/package.json new file mode 100644 index 0000000000..df2c7b2791 --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/addons/addon9/test-app/package.json @@ -0,0 +1,126 @@ +{ + "name": "test-addon9", + "version": "1.0.0", + "private": true, + "description": "Test app for addon9 addon", + "license": "UNLICENSED", + "directories": { + "doc": "doc", + "test": "tests" + }, + "scripts": { + "lint": "pnpm --filter addon9 lint && npm-run-all --aggregate-output --continue-on-error --parallel \"lint:!(fix)\"", + "lint:fix": "npm-run-all --aggregate-output --continue-on-error --parallel lint:*:fix", + "lint:hbs": "ember-template-lint . --quiet", + "lint:hbs:fix": "ember-template-lint . --fix", + "lint:js": "eslint . --cache --quiet", + "lint:js:fix": "eslint . --fix", + "lint:ts": "glint", + "lint:scss": "stylelint \"app/**/*.scss\" --quiet", + "lint:scss:fix": "stylelint \"app/**/*.scss\" --fix", + "build": "ember build --environment=production", + "start": "ember server", + "test": "npm-run-all lint test:*", + "test:ember": "ember test" + }, + "devDependencies": { + "addon2": "workspace:*", + "addon3": "workspace:*", + "module3": "workspace:*", + "module5": "workspace:*", + "addon6": "workspace:*", + "addon7": "workspace:*", + "addon9": "workspace:*", + "addon13": "workspace:*", + "module6": "workspace:*", + "@babel/core": "~7.24.7", + "@babel/plugin-transform-class-static-block": "~7.24.7", + "@ember/optional-features": "~2.1.0", + "@ember/string": "~3.1.1", + "@ember/test-helpers": "~3.1.0", + "@ember-data/adapter": "~4.12.8", + "@embroider/broccoli-side-watch": "0.0.2-unstable.ba9fd29", + "@embroider/core": "~3.4.14", + "@embroider/compat": "~3.6.0", + "@embroider/test-setup": "~4.0.0", + "@embroider/webpack": "~4.0.4", + "@faker-js/faker": "~8.0.2", + "@glimmer/component": "~1.1.2", + "@glimmer/tracking": "~1.1.2", + "@glint/core": "1.4.0", + "@glint/environment-ember-loose": "1.4.0", + "@glint/template": "1.4.0", + "@sinonjs/fake-timers": "^6.0.1", + "@types/ember-data": "~4.4.12", + "@types/ember-data__adapter": "~4.0.3", + "@types/ember-data__model": "~4.0.2", + "@types/ember-data__serializer": "~4.0.3", + "@types/ember-data__store": "~4.0.4", + "@types/qunit": "~2.19.10", + "@types/rsvp": "~4.0.9", + "@types/sinonjs__fake-timers": "^6.0.2", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "broccoli-asset-rev": "~3.0.0", + "css-loader": "~7.1.2", + "date-fns": "2.29.3", + "date-fns-tz": "~2.0.1", + "ember-a11y-testing": "~7.0.1", + "ember-auto-import": "~2.7.4", + "ember-cli": "~4.12.2", + "ember-cli-app-version": "~6.0.1", + "ember-cli-babel": "~7.26.11", + "ember-cli-code-coverage": "~2.0.3", + "ember-cli-dependency-checker": "~3.3.2", + "ember-cli-htmlbars": "~6.3.0", + "ember-cli-inject-live-reload": "~2.1.0", + "ember-cli-mirage": "~3.0.2", + "ember-cli-sri": "~2.1.1", + "ember-cli-terser": "~4.0.2", + "ember-cli-valid-component-name": "^1.0.0", + "ember-concurrency": "~4.0.2", + "ember-inflector": "~4.0.2", + "ember-intl": "6.4.0", + "ember-data": "~4.12.8", + "ember-load-initializers": "~2.1.2", + "ember-modifier": "~4.2.0", + "ember-percy": "~1.6.0", + "ember-qunit": "~8.1.0", + "ember-resolver": "~10.0.0", + "ember-responsive": "~5.0.0", + "ember-source": "~4.12.4", + "ember-source-channel-url": "^3.0.0", + "ember-template-lint": "~5.13.0", + "ember-test-selectors": "~6.0.0", + "eslint": "~8.57.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-ember": "~12.2.0", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~4.2.1", + "eslint-plugin-qunit": "~7.3.4", + "loader.js": "~4.7.0", + "mini-css-extract-plugin": "~2.9.0", + "miragejs": "~0.1.48", + "npm-run-all": "~4.1.5", + "popper.js": "~1.16.1", + "prettier": "~2.8.7", + "qunit": "~2.21.0", + "qunit-dom": "~2.0.0", + "sass-embedded": "~1.61.0", + "sass-loader": "~16.0.0", + "stylelint": "~16.2.1", + "stylelint-config-sass-guidelines": "~11.0.0", + "stylelint-config-standard": "~36.0.0", + "stylelint-order": "~6.0.4", + "stylelint-prettier": "~3.0.0", + "stylelint-scss": "~6.1.0", + "typescript": "5.3.3", + "webpack": "~5.94.0" + }, + "engines": { + "node": ">= 18" + }, + "ember": { + "edition": "octane" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module1/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module1/package.json new file mode 100644 index 0000000000..52d673bd59 --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module1/package.json @@ -0,0 +1,16 @@ +{ + "name": "module1", + "version": "1.3.0", + "description": "", + "devDependencies": { + "@babel/core": "~7.24.7", + "@babel/preset-env": "^7.23.9", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "eslint": "~7.32.0", + "mocha": "^10.0.0", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "typescript": "5.3.3" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module10/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module10/package.json new file mode 100644 index 0000000000..156a2778cf --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module10/package.json @@ -0,0 +1,27 @@ +{ + "name": "module10", + "version": "1.0.0", + "devDependencies": { + "@types/gulp": "^4.0.9", + "@types/node": "^16.11.12", + "@types/vinyl": "^2.0.7", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "del": "~6.1.1", + "eslint": "~8.57.0", + "eslint-plugin-mocha": "^10.0.5", + "eslint-plugin-node": "^11.1.0", + "mocha": "^10.0.0", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "ts-node": "^10.9.1", + "typescript": "5.3.3" + }, + "dependencies": { + "ansi-colors": "^4.1.1", + "eol": "^0.9.1", + "gulp": "~4.0.2", + "stream-reduce": "~1.0.3", + "vinyl": "~2.2.1" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module2/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module2/package.json new file mode 100644 index 0000000000..4553a652f7 --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module2/package.json @@ -0,0 +1,20 @@ +{ + "name": "module2", + "private": true, + "version": "1.1.1", + "description": "", + "main": "index.js", + "devDependencies": { + "eslint": "~8.57.0", + "eslint-plugin-mocha": "^10.0.5", + "eslint-plugin-node": "^11.1.0", + "mocha": "^10.0.0", + "msw": "2.3.1", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7" + }, + "dependencies": { + "module9": "workspace:*", + "gulp": "~4.0.2" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module3/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module3/package.json new file mode 100644 index 0000000000..0388cfd9ff --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module3/package.json @@ -0,0 +1,16 @@ +{ + "name": "module3", + "version": "1.0.0", + "devDependencies": { + "mocha": "^10.0.0", + "npm-run-all": "~4.1.5", + "postcss": "~8.4.38", + "postcss-scss": "~4.0.9", + "sass-embedded": "~1.61.0", + "stylelint": "~16.2.1", + "stylelint-config-sass-guidelines": "~11.0.0", + "stylelint-order": "~6.0.4", + "stylelint-scss": "~6.1.0" + }, + "dependencies": {} +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module4/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module4/package.json new file mode 100644 index 0000000000..b673e96442 --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module4/package.json @@ -0,0 +1,21 @@ +{ + "name": "module4", + "version": "1.0.0", + "devDependencies": { + "@babel/core": "~7.24.7", + "@babel/preset-env": "~7.23.9", + "@jest/globals": "29.7.0", + "@types/jest": "~29.5.12", + "@types/node": "~14.14.14", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "eslint": "~7.32.0", + "jest": "~29.7.0", + "jest-runner-eslint": "~2.2.0", + "jest-environment-jsdom": "~29.7.0", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "ts-jest": "~29.2.3", + "typescript": "5.3.3" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module5/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module5/package.json new file mode 100644 index 0000000000..4ab12c642b --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module5/package.json @@ -0,0 +1,23 @@ +{ + "name": "module5", + "version": "1.0.0", + "devDependencies": { + "@babel/core": "~7.24.7", + "@babel/eslint-parser": "~7.22.15", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-proposal-decorators": "~7.23.2", + "ember-template-lint": "^4.2.0", + "eslint": "~7.32.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^3.4.1", + "eslint-plugin-unicorn": "^31.0.0", + "mocha": "^9.2.1", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7" + }, + "peerDependencies": { + "ember-template-lint": "~5.13.0", + "eslint": ">= 6" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module6/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module6/package.json new file mode 100644 index 0000000000..0c582b7828 --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module6/package.json @@ -0,0 +1,35 @@ +{ + "name": "module6", + "version": "1.0.0", + "dependencies": { + "eslint-plugin-ember": "~10.6.1", + "eslint-utils": "~2.1.0", + "requireindex": "~1.2.0" + }, + "devDependencies": { + "@babel/core": "~7.24.7", + "@babel/eslint-parser": "~7.22.15", + "@babel/plugin-transform-class-properties": "~7.23.3", + "@babel/plugin-proposal-decorators": "~7.23.2", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "eslint": "~7.32.0", + "eslint-config-prettier": "~8.8.0", + "eslint-plugin-eslint-comments": "~3.2.0", + "eslint-plugin-eslint-plugin": "3.0.0", + "eslint-plugin-filenames": "~1.3.2", + "eslint-plugin-import": "~2.29.1", + "eslint-plugin-jest": "~24.7.0", + "eslint-plugin-n": "~15.7.0", + "eslint-plugin-prettier": "~3.4.1", + "eslint-plugin-unicorn": "~31.0.0", + "jest": "~29.7.0", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "ts-jest": "~29.2.3", + "typescript": "5.3.3" + }, + "peerDependencies": { + "eslint": ">= 6" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module7/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module7/package.json new file mode 100644 index 0000000000..4072554e8d --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module7/package.json @@ -0,0 +1,32 @@ +{ + "name": "module7", + "version": "1.0.0", + "devDependencies": { + "@types/gulp": "^4.0.9", + "@types/lodash": "^4.14.186", + "@types/node": "^16.11.12", + "@types/vinyl": "^2.0.7", + "@types/yargs": "^17.0.10", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "eslint": "~8.57.0", + "eslint-plugin-mocha": "^10.0.5", + "eslint-plugin-node": "^11.1.0", + "mocha": "^10.0.0", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "ts-node": "^10.9.1", + "typescript": "5.3.3" + }, + "dependencies": { + "@formatjs/icu-messageformat-parser": "^2.1.3", + "ansi-colors": "^4.1.1", + "del": "~6.1.1", + "eol": "^0.9.1", + "gulp": "~4.0.2", + "lodash": "^4.17.21", + "vinyl": "~2.2.1", + "yaml": "^2.0.0-9", + "yargs": "^17.5.1" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module8/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module8/package.json new file mode 100644 index 0000000000..a6414200c0 --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module8/package.json @@ -0,0 +1,31 @@ +{ + "name": "module8", + "version": "1.0.0", + "devDependencies": { + "@types/ember-data": "~4.4.12", + "@types/ember-data__model": "~4.0.2", + "@types/gulp": "^4.0.9", + "@types/node": "^18.0.0", + "@types/vinyl": "^2.0.7", + "@types/yargs": "^17.0.10", + "@typescript-eslint/eslint-plugin": "~6.21.0", + "@typescript-eslint/parser": "~6.21.0", + "eslint": "~8.57.0", + "eslint-plugin-mocha": "^10.0.5", + "eslint-plugin-node": "^11.1.0", + "miragejs": "~0.1.48", + "mocha": "^10.0.0", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7", + "ts-node": "^10.9.1", + "typescript": "5.3.3" + }, + "dependencies": { + "ansi-colors": "^4.1.1", + "del": "~6.1.1", + "gulp": "~4.0.2", + "stream-reduce": "~1.0.3", + "vinyl": "~2.2.1", + "yargs": "^17.5.1" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module9/package.json b/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module9/package.json new file mode 100644 index 0000000000..89f1ce52b5 --- /dev/null +++ b/pnpm/test/__fixtures__/workspace-with-circular-peers/modules/module9/package.json @@ -0,0 +1,18 @@ +{ + "name": "module9", + "version": "1.0.0", + "devDependencies": { + "del": "~6.1.1", + "eslint": "~8.57.0", + "eslint-plugin-mocha": "^10.0.5", + "eslint-plugin-node": "^11.1.0", + "mocha": "^10.0.0", + "npm-run-all": "~4.1.5", + "prettier": "~2.8.7" + }, + "dependencies": { + "ansi-colors": "^4.1.3", + "gulp": "~4.0.2", + "gulp-svg-sprite": "^1.5.0" + } +} diff --git a/pnpm/test/__fixtures__/workspace-with-circular-peers/pnpm-workspace.yaml b/pnpm/test/__fixtures__/workspace-with-circular-peers/pnpm-workspace.yaml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/pnpm/test/install/misc.ts b/pnpm/test/install/misc.ts index 0bd6c5e426..cc9b595c07 100644 --- a/pnpm/test/install/misc.ts +++ b/pnpm/test/install/misc.ts @@ -8,6 +8,7 @@ import { readProjectManifest } from '@pnpm/read-project-manifest' import { getIntegrity } from '@pnpm/registry-mock' import { getIndexFilePathInCafs } from '@pnpm/store.cafs' import { writeProjectManifest } from '@pnpm/write-project-manifest' +import { fixtures } from '@pnpm/test-fixtures' import dirIsCaseSensitive from 'dir-is-case-sensitive' import { sync as readYamlFile } from 'read-yaml-file' import { sync as rimraf } from '@zkochan/rimraf' @@ -21,6 +22,7 @@ import { } from '../utils' const skipOnWindows = isWindows() ? test.skip : test +const f = fixtures(__dirname) test('bin files are found by lifecycle scripts', () => { prepare({ @@ -548,3 +550,14 @@ test('do not fail to render peer dependencies warning, when cache was hit during expect(result.status).toBe(0) expect(result.stdout.toString()).toContain('Issues with peer dependencies found') }) + +// Covers https://github.com/pnpm/pnpm/issues/8720 +test('do not hang on circular peer dependencies', () => { + const tempDir = f.prepare('workspace-with-circular-peers') + process.chdir(tempDir) + + const result = execPnpmSync(['install', '--lockfile-only']) + + expect(result.status).toBe(0) + expect(fs.existsSync(path.join(tempDir, WANTED_LOCKFILE))).toBeTruthy() +})