yarn-why-duplicate 1.1.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md ADDED
@@ -0,0 +1,64 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+ See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
+
6
+ ## [2.0.0](https://github.com/christophehurpeau/yarn-why-duplicate/compare/v1.2.0...v2.0.0) (2023-11-05)
7
+
8
+
9
+ ### ⚠ BREAKING CHANGES
10
+
11
+ * require node 18
12
+
13
+ ### Features
14
+
15
+ * update to yarn 4 stable ([704278c](https://github.com/christophehurpeau/yarn-why-duplicate/commit/704278c5643a7fcb61704511b921cfa3485d3b04))
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * **deps:** update dependency @yarnpkg/core to v4.0.0-rc.43 ([#12](https://github.com/christophehurpeau/yarn-why-duplicate/issues/12)) ([f7d4e20](https://github.com/christophehurpeau/yarn-why-duplicate/commit/f7d4e202efdfa752d00ab834af391dae95896473))
21
+ * **deps:** update dependency @yarnpkg/core to v4.0.0-rc.44 ([#20](https://github.com/christophehurpeau/yarn-why-duplicate/issues/20)) ([2887734](https://github.com/christophehurpeau/yarn-why-duplicate/commit/2887734b2e58e1f48827acfef64457105aea940e))
22
+ * **deps:** update dependency @yarnpkg/core to v4.0.0-rc.45 ([#23](https://github.com/christophehurpeau/yarn-why-duplicate/issues/23)) ([f64c11d](https://github.com/christophehurpeau/yarn-why-duplicate/commit/f64c11d6cf26972e2cc2230cfbaf580f62543e0a))
23
+ * **deps:** update dependency @yarnpkg/core to v4.0.0-rc.46 ([#27](https://github.com/christophehurpeau/yarn-why-duplicate/issues/27)) ([0217338](https://github.com/christophehurpeau/yarn-why-duplicate/commit/021733849c68a20d7d4a57d102e0aa4d58b2bcca))
24
+ * **deps:** update dependency @yarnpkg/core to v4.0.0-rc.47 ([#34](https://github.com/christophehurpeau/yarn-why-duplicate/issues/34)) ([ffdebc6](https://github.com/christophehurpeau/yarn-why-duplicate/commit/ffdebc67829c874742628f7b1ca1cda9259716b7))
25
+ * **deps:** update dependency @yarnpkg/core to v4.0.0-rc.48 ([#38](https://github.com/christophehurpeau/yarn-why-duplicate/issues/38)) ([e98d67a](https://github.com/christophehurpeau/yarn-why-duplicate/commit/e98d67a81a1e7e844ef6fd0ced0a8e7f84f05f72))
26
+ * **deps:** update dependency semver to v7.5.1 ([#18](https://github.com/christophehurpeau/yarn-why-duplicate/issues/18)) ([4b347b9](https://github.com/christophehurpeau/yarn-why-duplicate/commit/4b347b955b6bfdf07c5e4451ac4018cb92fe58ea))
27
+ * **deps:** update dependency semver to v7.5.2 ([#24](https://github.com/christophehurpeau/yarn-why-duplicate/issues/24)) ([9359f4b](https://github.com/christophehurpeau/yarn-why-duplicate/commit/9359f4b096230ca238d7d4702c9543871e48d5af))
28
+ * **deps:** update dependency semver to v7.5.3 ([#26](https://github.com/christophehurpeau/yarn-why-duplicate/issues/26)) ([b6cbe1b](https://github.com/christophehurpeau/yarn-why-duplicate/commit/b6cbe1b2f48a407e0ef765574636e2c1d4bfdfea))
29
+ * **deps:** update dependency semver to v7.5.4 ([#39](https://github.com/christophehurpeau/yarn-why-duplicate/issues/39)) ([bb3599a](https://github.com/christophehurpeau/yarn-why-duplicate/commit/bb3599a7830805e864f5f92180c01bf49ba97efd))
30
+
31
+
32
+ ### Code Refactoring
33
+
34
+ * drop node 16 ([be786c3](https://github.com/christophehurpeau/yarn-why-duplicate/commit/be786c3be71e0a7e676ff96faf57f029739a78c4))
35
+
36
+
37
+ ## [1.2.0](https://github.com/christophehurpeau/yarn-why-duplicate/compare/v1.1.0...v1.2.0) (2023-04-25)
38
+
39
+
40
+ ### Features
41
+
42
+ * force 1.2.0 ([72688d8](https://github.com/christophehurpeau/yarn-why-duplicate/commit/72688d83af568ebb83fe8ee261b6ac18adf44f0e))
43
+
44
+ ## [1.1.0](https://github.com/christophehurpeau/yarn-why-duplicate/compare/v1.0.0...v1.1.0) (2023-04-25)
45
+
46
+
47
+ ### Features
48
+
49
+ * force 1.1.0 ([d333635](https://github.com/christophehurpeau/yarn-why-duplicate/commit/d3336353ffe709910577310116dab70dd8f25f5c))
50
+
51
+ ## 1.0.0 (2023-04-25)
52
+
53
+
54
+ ### Features
55
+
56
+ * **deps:** update dependency semver to v7.5.0 ([#4](https://github.com/christophehurpeau/yarn-why-duplicate/issues/4)) ([f9eee30](https://github.com/christophehurpeau/yarn-why-duplicate/commit/f9eee30e153dea0dc8dabb69b2484dd6dd3be0dc))
57
+ * first commit ([c3a6354](https://github.com/christophehurpeau/yarn-why-duplicate/commit/c3a6354ae139baffc75c4582af439db4f496329c))
58
+
59
+
60
+ ### Bug Fixes
61
+
62
+ * add try/catch on compareRange ([357eed7](https://github.com/christophehurpeau/yarn-why-duplicate/commit/357eed715012b156d4abd447f9d7232fdc066d72))
63
+ * use virtuals ([340d56a](https://github.com/christophehurpeau/yarn-why-duplicate/commit/340d56a8abc6c81b9973ed5ecb80604e6905990b))
64
+ * virtual child ([8798439](https://github.com/christophehurpeau/yarn-why-duplicate/commit/8798439ccf4f7ee40292ce9fb734e573a37c1d71))
package/README.md ADDED
@@ -0,0 +1,22 @@
1
+ <h3 align="center">
2
+ yarn-why-duplicate
3
+ </h3>
4
+
5
+ <p align="center">
6
+ Simple bin to know why a package is duplicated
7
+ </p>
8
+
9
+ <p align="center">
10
+ <a href="https://npmjs.org/package/yarn-why-duplicate"><img src="https://img.shields.io/npm/v/yarn-why-duplicate.svg?style=flat-square"></a>
11
+ <a href="https://npmjs.org/package/yarn-why-duplicate"><img src="https://img.shields.io/npm/dw/yarn-why-duplicate.svg?style=flat-square"></a>
12
+ <a href="https://npmjs.org/package/yarn-why-duplicate"><img src="https://img.shields.io/node/v/yarn-why-duplicate.svg?style=flat-square"></a>
13
+ <a href="https://npmjs.org/package/yarn-why-duplicate"><img src="https://img.shields.io/npm/types/yarn-why-duplicate.svg?style=flat-square"></a>
14
+ </p>
15
+
16
+ ## Usage
17
+
18
+ With yarn berry:
19
+
20
+ ```
21
+ yarn dlx yarn-why-duplicate <dependencyName>
22
+ ```
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import {readAndParseYarnWhy} from '../lib/readAndParseYarnWhy.js';
4
- import { identifyDuplicates } from '../lib/identifyDuplicates.js';
5
3
  import { displayDuplicates } from '../lib/displayDuplicates.js';
4
+ import { identifyDuplicates } from '../lib/identifyDuplicates.js';
5
+ import { readAndParseYarnWhy } from '../lib/readAndParseYarnWhy.js';
6
6
 
7
7
  const pkgName = process.argv.slice(2)[0];
8
8
 
@@ -10,7 +10,7 @@ const yarnWhyResult = readAndParseYarnWhy(pkgName);
10
10
 
11
11
  for (const line of yarnWhyResult) {
12
12
  if (line.type === 'error') {
13
- console.error('yarn error: ' + line.data);
13
+ console.error(`yarn error: ${line.data}`);
14
14
  process.exit(1);
15
15
  } else if (line.type === 'step') {
16
16
  console.error('yarn 1 is not supported, use yarn berry (>=2)');
@@ -0,0 +1,20 @@
1
+ {
2
+ "root": true,
3
+ "extends": ["@pob/eslint-config/node-module"],
4
+ "overrides": [
5
+ {
6
+ "files": ["**/*.test.{cjs,js}", "__tests__/**/*.{cjs,js}"],
7
+ "env": {
8
+ "jest": true
9
+ },
10
+ "rules": {
11
+ "import/no-extraneous-dependencies": [
12
+ "error",
13
+ {
14
+ "devDependencies": true
15
+ }
16
+ ]
17
+ }
18
+ }
19
+ ]
20
+ }
@@ -1,19 +1,32 @@
1
1
  import { structUtils, Configuration } from '@yarnpkg/core';
2
2
 
3
- export const displayDuplicates = (groupByVersions, log = console.log, configuration = Configuration.create(process.cwd())) => {
4
- if (!groupByVersions.length) {
3
+ export const displayDuplicates = (
4
+ groupByVersions,
5
+ log = console.log,
6
+ configuration = Configuration.create(process.cwd()),
7
+ ) => {
8
+ if (groupByVersions.length === 0) {
5
9
  log('No version found');
6
10
  return;
7
11
  }
8
12
 
9
- log(`Found ${groupByVersions.length} version${groupByVersions.length === 1 ? '' : 's'}:`)
13
+ log(
14
+ `Found ${groupByVersions.length} version${
15
+ groupByVersions.length === 1 ? '' : 's'
16
+ }:`,
17
+ );
10
18
  log();
11
19
 
12
20
  for (const { descriptor, sources } of groupByVersions) {
13
- log(structUtils.prettyDescriptor(configuration,descriptor));
14
- for (const { source, locator, descriptor } of sources) {
15
- log(`- ${structUtils.prettyDescriptor(configuration,source)} (${structUtils.prettyDescriptor(configuration,descriptor)})`); // TODO prettyDescriptor from structUtils
21
+ log(structUtils.prettyDescriptor(configuration, descriptor));
22
+ for (const { source, descriptor } of sources.values()) {
23
+ log(
24
+ `- ${structUtils.prettyDescriptor(
25
+ configuration,
26
+ source,
27
+ )} (${structUtils.prettyDescriptor(configuration, descriptor)})`,
28
+ ); // TODO prettyDescriptor from structUtils
16
29
  }
17
30
  log();
18
31
  }
19
- }
32
+ };
@@ -5,27 +5,40 @@ export const identifyDuplicates = (yarnWhyResult) => {
5
5
  const groupByVersions = new Map();
6
6
 
7
7
  for (const line of yarnWhyResult) {
8
- const parsedValue = structUtils.parseDescriptor(line.value);
9
-
10
- if (structUtils.isVirtualDescriptor(parsedValue)) {
11
- // when looking for duplicates, we don't want to look at virtual packages
12
- continue;
13
- }
8
+ const descriptor = structUtils.parseDescriptor(line.value);
9
+ const devirtualizedDescriptor = structUtils.isVirtualDescriptor(descriptor)
10
+ ? structUtils.devirtualizeDescriptor(descriptor)
11
+ : descriptor;
14
12
 
15
13
  for (const [key, child] of Object.entries(line.children)) {
16
- let byVersion = groupByVersions.get(key);
14
+ const childDescriptor = structUtils.parseDescriptor(key);
15
+ const devirtualizedChildDescriptor = structUtils.isVirtualDescriptor(
16
+ childDescriptor,
17
+ )
18
+ ? structUtils.devirtualizeDescriptor(childDescriptor)
19
+ : childDescriptor;
20
+
21
+ let byVersion = groupByVersions.get(
22
+ devirtualizedChildDescriptor.descriptorHash,
23
+ );
17
24
  if (!byVersion) {
18
25
  byVersion = {
19
- descriptor: structUtils.parseDescriptor(key),
20
- sources: [],
26
+ descriptor: devirtualizedChildDescriptor,
27
+ sources: new Map(),
21
28
  };
22
- groupByVersions.set(key, byVersion);
29
+ groupByVersions.set(
30
+ devirtualizedChildDescriptor.descriptorHash,
31
+ byVersion,
32
+ );
33
+ }
34
+
35
+ if (!byVersion.sources.has(devirtualizedDescriptor.descriptorHash)) {
36
+ byVersion.sources.set(devirtualizedDescriptor.descriptorHash, {
37
+ source: devirtualizedDescriptor, // source of the dependency
38
+ descriptor: structUtils.parseDescriptor(child.descriptor), // value parsed from package.json eg date-fns@npm:^1.29.0
39
+ locator: structUtils.parseLocator(child.locator), // value resolved by yarn eg date-fns@npm:1.30.1
40
+ });
23
41
  }
24
- byVersion.sources.push({
25
- source: parsedValue, // source of the dependency
26
- descriptor: structUtils.parseDescriptor(child.descriptor), // value parsed from package.json eg date-fns@npm:^1.29.0
27
- locator: structUtils.parseLocator(child.locator), // value resolved by yarn eg date-fns@npm:1.30.1
28
- });
29
42
  }
30
43
  }
31
44
 
@@ -33,8 +46,13 @@ export const identifyDuplicates = (yarnWhyResult) => {
33
46
  groups.sort((a, b) => {
34
47
  const aRange = structUtils.parseRange(a.descriptor.range);
35
48
  const bRange = structUtils.parseRange(b.descriptor.range);
36
- return -compareRange(aRange.selector, bRange.selector);
49
+
50
+ try {
51
+ return -compareRange(aRange.selector, bRange.selector);
52
+ } catch {
53
+ return 0;
54
+ }
37
55
  });
38
56
 
39
57
  return groups;
40
- }
58
+ };
@@ -1,19 +1,24 @@
1
- import { spawnSync } from 'child_process';
1
+ import { spawnSync } from 'node:child_process';
2
2
 
3
3
  export const parseYarnWhy = (content) => {
4
- return content.split('\n')
5
- .filter(Boolean)
6
- .map((line) => JSON.parse(line));
4
+ return content
5
+ .split('\n')
6
+ .filter(Boolean)
7
+ .map((line) => JSON.parse(line));
7
8
  };
8
9
 
9
10
  export const readAndParseYarnWhy = (pkgName) => {
10
- const { stdout, stderr } = spawnSync('yarn',['why', pkgName, '--json'], { encoding: 'utf8', 'stdio': 'pipe', pwd: process.cwd() });
11
+ const { stdout, stderr } = spawnSync('yarn', ['why', pkgName, '--json'], {
12
+ encoding: 'utf8',
13
+ stdio: 'pipe',
14
+ pwd: process.cwd(),
15
+ });
11
16
  if (stderr) {
12
17
  try {
13
18
  return parseYarnWhy(stderr);
14
- } catch (err) {
15
- throw new Error('yarn failed: ' + stderr);
19
+ } catch {
20
+ throw new Error(`yarn failed: ${stderr}`);
16
21
  }
17
22
  }
18
23
  return parseYarnWhy(stdout);
19
- };
24
+ };
package/package.json CHANGED
@@ -1,30 +1,62 @@
1
1
  {
2
2
  "name": "yarn-why-duplicate",
3
- "version": "1.1.0",
3
+ "version": "2.0.0",
4
4
  "description": "Simple bin to know why a package is duplicated",
5
- "main": "bin/yarn-why-duplicate.mjs",
6
- "type": "module",
7
- "scripts": {
8
- "test": "echo \"Error: no test specified\" && exit 1"
9
- },
10
- "repository": {
11
- "type": "git",
12
- "url": "git+https://github.com/christophehurpeau/yarn-why-duplicate.git"
13
- },
14
- "bin": {
15
- "yarn-why-duplicate": "./bin/yarn-why-duplicate.mjs"
16
- },
17
5
  "keywords": [
18
6
  "yarn",
19
7
  "berry"
20
8
  ],
21
- "author": "Christophe Hurpeau",
9
+ "author": "Christophe Hurpeau <christophe@hurpeau.com> (https://christophe.hurpeau.com)",
22
10
  "license": "ISC",
11
+ "repository": "https://github.com/christophehurpeau/yarn-why-duplicate.git",
12
+ "homepage": "https://github.com/christophehurpeau/yarn-why-duplicate#readme",
23
13
  "bugs": {
24
14
  "url": "https://github.com/christophehurpeau/yarn-why-duplicate/issues"
25
15
  },
26
- "homepage": "https://github.com/christophehurpeau/yarn-why-duplicate#readme",
16
+ "type": "module",
17
+ "engines": {
18
+ "node": ">=18.12.0"
19
+ },
20
+ "packageManager": "yarn@4.0.1",
21
+ "main": "./lib/index.js",
22
+ "exports": {
23
+ ".": "./lib/index.js",
24
+ "./package.json": "./package.json"
25
+ },
26
+ "sideEffects": false,
27
+ "bin": "./bin/yarn-why-duplicate.mjs",
28
+ "files": [
29
+ "lib",
30
+ "bin"
31
+ ],
32
+ "scripts": {
33
+ "checks": "node scripts/check-package.js",
34
+ "clean:build": "true",
35
+ "lint": "yarn run lint:prettier && yarn run lint:eslint",
36
+ "lint:eslint": "eslint --report-unused-disable-directives --resolve-plugins-relative-to . --quiet *.{js,cjs,mjs} lib bin scripts",
37
+ "lint:prettier": "pob-root-prettier --check .",
38
+ "lint:prettier:fix": "pob-root-prettier --write .",
39
+ "postinstallDev": "pob-root-postinstall",
40
+ "test": "node --test",
41
+ "test:coverage": "node --test",
42
+ "test:watch": "node --test --watch"
43
+ },
44
+ "prettier": "@pob/root/prettier-config",
45
+ "commitlint": {
46
+ "extends": [
47
+ "@pob/commitlint-config"
48
+ ]
49
+ },
50
+ "pob": {},
27
51
  "dependencies": {
28
- "@yarnpkg/core": "^4.0.0-rc.42"
52
+ "@yarnpkg/core": "4.0.1",
53
+ "semver": "7.5.4"
54
+ },
55
+ "devDependencies": {
56
+ "@pob/commitlint-config": "6.2.0",
57
+ "@pob/eslint-config": "51.1.2",
58
+ "@pob/root": "8.6.0",
59
+ "check-package-dependencies": "6.8.0",
60
+ "eslint": "8.53.0"
29
61
  }
30
62
  }
@@ -1,7 +0,0 @@
1
- {"value":"@ornikar/learner-apps-shared@virtual:72efe2163a558449a8f66d9788562063236597b9b91f180e4c4438146efb94a72f711a8dd32272d11bfb7021567117fcfc487b64e6e65b2d2dd86917a2212195#workspace:@ornikar/learner-apps-shared","children":{"date-fns@npm:1.30.1":{"locator":"date-fns@npm:1.30.1","descriptor":"date-fns@npm:1.30.1"}}}
2
- {"value":"@ornikar/learner-apps-shared@virtual:74b4ee70bd6a38b10f925bd66e65d0142e2ee6418cefa62443ad0a5071d5e3013ade614aacfa04ed7ad7eb898eb4f5d788c3b246824acc7ce546f40d4046456a#workspace:@ornikar/learner-apps-shared","children":{"date-fns@npm:1.30.1":{"locator":"date-fns@npm:1.30.1","descriptor":"date-fns@npm:1.30.1"}}}
3
- {"value":"@ornikar/learner-apps-shared@workspace:@ornikar/learner-apps-shared","children":{"date-fns@npm:1.30.1":{"locator":"date-fns@npm:1.30.1","descriptor":"date-fns@npm:1.30.1"}}}
4
- {"value":"@ornikar/learner-native-app@workspace:@ornikar/learner-native-app","children":{"date-fns@npm:1.30.1":{"locator":"date-fns@npm:1.30.1","descriptor":"date-fns@npm:1.30.1"}}}
5
- {"value":"@ornikar/learner-webapp@workspace:@ornikar/learner-webapp","children":{"date-fns@npm:1.30.1":{"locator":"date-fns@npm:1.30.1","descriptor":"date-fns@npm:1.30.1"}}}
6
- {"value":"date-fns-timezone@npm:0.1.4","children":{"date-fns@npm:1.30.1":{"locator":"date-fns@npm:1.30.1","descriptor":"date-fns@npm:^1.29.0"}}}
7
- {"value":"listr-verbose-renderer@npm:0.5.0","children":{"date-fns@npm:1.30.1":{"locator":"date-fns@npm:1.30.1","descriptor":"date-fns@npm:^1.27.2"}}}
@@ -1,9 +0,0 @@
1
- {"value":"@ornikar/kitt-universal@npm:9.47.2","children":{"native-base@patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::version=3.4.18&hash=f36c02&locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A.":{"locator":"native-base@patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::version=3.4.18&hash=f36c02&locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A.","descriptor":"native-base@patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A."}}}
2
- {"value":"@ornikar/kitt-universal@virtual:0be1bed3bf44b487b4f72ea3695e753a329b20e6f34aad2b49c1ffe05302161a5820d406390378609bd21e85f867075b568762523dded617babeee2a4931d60c#npm:9.47.2","children":{"native-base@virtual:90f5f41ee6601135942900f486c3c5ffedde9284b4533392d4dff9f0f03959aa66453ebc8ca730d75ba9f32e751d5c196d42c4e9b160d95d68d8cc4c382bf9b9#patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::version=3.4.18&hash=f36c02&locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A.":{"locator":"native-base@virtual:90f5f41ee6601135942900f486c3c5ffedde9284b4533392d4dff9f0f03959aa66453ebc8ca730d75ba9f32e751d5c196d42c4e9b160d95d68d8cc4c382bf9b9#patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::version=3.4.18&hash=f36c02&locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A.","descriptor":"native-base@virtual:90f5f41ee6601135942900f486c3c5ffedde9284b4533392d4dff9f0f03959aa66453ebc8ca730d75ba9f32e751d5c196d42c4e9b160d95d68d8cc4c382bf9b9#patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A."}}}
3
- {"value":"@ornikar/kitt-universal@virtual:0ca324951f76c640d167f8be57292cc5427c8e53f9895c89483e077c606224ccbcf16ad9922d175a40513e38e935f54868149960f54484e24b48c8cccfab76e1#npm:9.47.2","children":{"native-base@virtual:52b0d29897f20bc016d2290033e1ba0da865e17e2ba48137dc23ae8a9b50c1163a6794c1ffc5ba320e3915131fd7441b1b39bbec567fcb06a150b36e61d8607a#patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::version=3.4.18&hash=f36c02&locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A.":{"locator":"native-base@virtual:52b0d29897f20bc016d2290033e1ba0da865e17e2ba48137dc23ae8a9b50c1163a6794c1ffc5ba320e3915131fd7441b1b39bbec567fcb06a150b36e61d8607a#patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::version=3.4.18&hash=f36c02&locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A.","descriptor":"native-base@virtual:52b0d29897f20bc016d2290033e1ba0da865e17e2ba48137dc23ae8a9b50c1163a6794c1ffc5ba320e3915131fd7441b1b39bbec567fcb06a150b36e61d8607a#patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A."}}}
4
- {"value":"@ornikar/kitt-universal@virtual:1136f75479f1c0368379cdac9e20ca0d345350ab0b4bc311d0e68cd11cf749e0e6c3da8127f098c07ca6c98279501ed797a99404d1a7d7b28228182a8666befd#npm:9.47.2","children":{"native-base@virtual:90f5f41ee6601135942900f486c3c5ffedde9284b4533392d4dff9f0f03959aa66453ebc8ca730d75ba9f32e751d5c196d42c4e9b160d95d68d8cc4c382bf9b9#patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::version=3.4.18&hash=f36c02&locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A.":{"locator":"native-base@virtual:90f5f41ee6601135942900f486c3c5ffedde9284b4533392d4dff9f0f03959aa66453ebc8ca730d75ba9f32e751d5c196d42c4e9b160d95d68d8cc4c382bf9b9#patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::version=3.4.18&hash=f36c02&locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A.","descriptor":"native-base@virtual:90f5f41ee6601135942900f486c3c5ffedde9284b4533392d4dff9f0f03959aa66453ebc8ca730d75ba9f32e751d5c196d42c4e9b160d95d68d8cc4c382bf9b9#patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A."}}}
5
- {"value":"@ornikar/kitt-universal@virtual:1f1cae68357607dff1de137d1818886277734c6ef3353ca79fcafc15661da2f5a24850b7813fd6c37767689b4ca26137572e6c5f677492fe71ecf7c4b6013047#npm:9.47.2","children":{"native-base@virtual:52b0d29897f20bc016d2290033e1ba0da865e17e2ba48137dc23ae8a9b50c1163a6794c1ffc5ba320e3915131fd7441b1b39bbec567fcb06a150b36e61d8607a#patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::version=3.4.18&hash=f36c02&locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A.":{"locator":"native-base@virtual:52b0d29897f20bc016d2290033e1ba0da865e17e2ba48137dc23ae8a9b50c1163a6794c1ffc5ba320e3915131fd7441b1b39bbec567fcb06a150b36e61d8607a#patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::version=3.4.18&hash=f36c02&locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A.","descriptor":"native-base@virtual:52b0d29897f20bc016d2290033e1ba0da865e17e2ba48137dc23ae8a9b50c1163a6794c1ffc5ba320e3915131fd7441b1b39bbec567fcb06a150b36e61d8607a#patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A."}}}
6
- {"value":"@ornikar/kitt-universal@virtual:72efe2163a558449a8f66d9788562063236597b9b91f180e4c4438146efb94a72f711a8dd32272d11bfb7021567117fcfc487b64e6e65b2d2dd86917a2212195#npm:9.47.2","children":{"native-base@virtual:7e32c6d530be59789f2b5bd604ab253edad99eca5686bf4aa54de4acfc450f1913bb49e8a06d399f730db201824476391d6c76c642188c6ce41996fd39ecdaa5#patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::version=3.4.18&hash=f36c02&locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A.":{"locator":"native-base@virtual:7e32c6d530be59789f2b5bd604ab253edad99eca5686bf4aa54de4acfc450f1913bb49e8a06d399f730db201824476391d6c76c642188c6ce41996fd39ecdaa5#patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::version=3.4.18&hash=f36c02&locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A.","descriptor":"native-base@virtual:7e32c6d530be59789f2b5bd604ab253edad99eca5686bf4aa54de4acfc450f1913bb49e8a06d399f730db201824476391d6c76c642188c6ce41996fd39ecdaa5#patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A."}}}
7
- {"value":"@ornikar/kitt-universal@virtual:74b4ee70bd6a38b10f925bd66e65d0142e2ee6418cefa62443ad0a5071d5e3013ade614aacfa04ed7ad7eb898eb4f5d788c3b246824acc7ce546f40d4046456a#npm:9.47.2","children":{"native-base@virtual:52b0d29897f20bc016d2290033e1ba0da865e17e2ba48137dc23ae8a9b50c1163a6794c1ffc5ba320e3915131fd7441b1b39bbec567fcb06a150b36e61d8607a#patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::version=3.4.18&hash=f36c02&locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A.":{"locator":"native-base@virtual:52b0d29897f20bc016d2290033e1ba0da865e17e2ba48137dc23ae8a9b50c1163a6794c1ffc5ba320e3915131fd7441b1b39bbec567fcb06a150b36e61d8607a#patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::version=3.4.18&hash=f36c02&locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A.","descriptor":"native-base@virtual:52b0d29897f20bc016d2290033e1ba0da865e17e2ba48137dc23ae8a9b50c1163a6794c1ffc5ba320e3915131fd7441b1b39bbec567fcb06a150b36e61d8607a#patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A."}}}
8
- {"value":"@ornikar/kitt-universal@virtual:a17044608ff370441880abc6c9644f8eab0c9711e8541578ef687648781bbafb9e2f16d4e9c8922e4f978da848d66ce5fd9ba4e4ccab272c7abd57eeea4a8499#npm:9.47.2","children":{"native-base@virtual:52b0d29897f20bc016d2290033e1ba0da865e17e2ba48137dc23ae8a9b50c1163a6794c1ffc5ba320e3915131fd7441b1b39bbec567fcb06a150b36e61d8607a#patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::version=3.4.18&hash=f36c02&locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A.":{"locator":"native-base@virtual:52b0d29897f20bc016d2290033e1ba0da865e17e2ba48137dc23ae8a9b50c1163a6794c1ffc5ba320e3915131fd7441b1b39bbec567fcb06a150b36e61d8607a#patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::version=3.4.18&hash=f36c02&locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A.","descriptor":"native-base@virtual:52b0d29897f20bc016d2290033e1ba0da865e17e2ba48137dc23ae8a9b50c1163a6794c1ffc5ba320e3915131fd7441b1b39bbec567fcb06a150b36e61d8607a#patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A."}}}
9
- {"value":"@ornikar/kitt-universal@virtual:a263e33b1a50d76cea6ded5941f5756223998e8d38de08d4b0717fd7d8bf285b7eb6b3009a326693a41b27b271e9ce1b5a82c32769ac357127bcb51edde55b1f#npm:9.47.2","children":{"native-base@virtual:52b0d29897f20bc016d2290033e1ba0da865e17e2ba48137dc23ae8a9b50c1163a6794c1ffc5ba320e3915131fd7441b1b39bbec567fcb06a150b36e61d8607a#patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::version=3.4.18&hash=f36c02&locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A.":{"locator":"native-base@virtual:52b0d29897f20bc016d2290033e1ba0da865e17e2ba48137dc23ae8a9b50c1163a6794c1ffc5ba320e3915131fd7441b1b39bbec567fcb06a150b36e61d8607a#patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::version=3.4.18&hash=f36c02&locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A.","descriptor":"native-base@virtual:52b0d29897f20bc016d2290033e1ba0da865e17e2ba48137dc23ae8a9b50c1163a6794c1ffc5ba320e3915131fd7441b1b39bbec567fcb06a150b36e61d8607a#patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A."}}}
@@ -1,58 +0,0 @@
1
- {"value":"@ornikar/api-helpers@npm:4.9.8","children":{"type-fest@npm:3.5.3":{"locator":"type-fest@npm:3.5.3","descriptor":"type-fest@npm:^3.3.0"}}}
2
- {"value":"@ornikar/kitt-universal@npm:9.47.2","children":{"type-fest@npm:3.5.3":{"locator":"type-fest@npm:3.5.3","descriptor":"type-fest@npm:^3.0.0"}}}
3
- {"value":"@ornikar/kitt-universal@virtual:0be1bed3bf44b487b4f72ea3695e753a329b20e6f34aad2b49c1ffe05302161a5820d406390378609bd21e85f867075b568762523dded617babeee2a4931d60c#npm:9.47.2","children":{"type-fest@npm:3.5.3":{"locator":"type-fest@npm:3.5.3","descriptor":"type-fest@npm:^3.0.0"}}}
4
- {"value":"@ornikar/kitt-universal@virtual:0ca324951f76c640d167f8be57292cc5427c8e53f9895c89483e077c606224ccbcf16ad9922d175a40513e38e935f54868149960f54484e24b48c8cccfab76e1#npm:9.47.2","children":{"type-fest@npm:3.5.3":{"locator":"type-fest@npm:3.5.3","descriptor":"type-fest@npm:^3.0.0"}}}
5
- {"value":"@ornikar/kitt-universal@virtual:1136f75479f1c0368379cdac9e20ca0d345350ab0b4bc311d0e68cd11cf749e0e6c3da8127f098c07ca6c98279501ed797a99404d1a7d7b28228182a8666befd#npm:9.47.2","children":{"type-fest@npm:3.5.3":{"locator":"type-fest@npm:3.5.3","descriptor":"type-fest@npm:^3.0.0"}}}
6
- {"value":"@ornikar/kitt-universal@virtual:1f1cae68357607dff1de137d1818886277734c6ef3353ca79fcafc15661da2f5a24850b7813fd6c37767689b4ca26137572e6c5f677492fe71ecf7c4b6013047#npm:9.47.2","children":{"type-fest@npm:3.5.3":{"locator":"type-fest@npm:3.5.3","descriptor":"type-fest@npm:^3.0.0"}}}
7
- {"value":"@ornikar/kitt-universal@virtual:72efe2163a558449a8f66d9788562063236597b9b91f180e4c4438146efb94a72f711a8dd32272d11bfb7021567117fcfc487b64e6e65b2d2dd86917a2212195#npm:9.47.2","children":{"type-fest@npm:3.5.3":{"locator":"type-fest@npm:3.5.3","descriptor":"type-fest@npm:^3.0.0"}}}
8
- {"value":"@ornikar/kitt-universal@virtual:74b4ee70bd6a38b10f925bd66e65d0142e2ee6418cefa62443ad0a5071d5e3013ade614aacfa04ed7ad7eb898eb4f5d788c3b246824acc7ce546f40d4046456a#npm:9.47.2","children":{"type-fest@npm:3.5.3":{"locator":"type-fest@npm:3.5.3","descriptor":"type-fest@npm:^3.0.0"}}}
9
- {"value":"@ornikar/kitt-universal@virtual:a17044608ff370441880abc6c9644f8eab0c9711e8541578ef687648781bbafb9e2f16d4e9c8922e4f978da848d66ce5fd9ba4e4ccab272c7abd57eeea4a8499#npm:9.47.2","children":{"type-fest@npm:3.5.3":{"locator":"type-fest@npm:3.5.3","descriptor":"type-fest@npm:^3.0.0"}}}
10
- {"value":"@ornikar/kitt-universal@virtual:a263e33b1a50d76cea6ded5941f5756223998e8d38de08d4b0717fd7d8bf285b7eb6b3009a326693a41b27b271e9ce1b5a82c32769ac357127bcb51edde55b1f#npm:9.47.2","children":{"type-fest@npm:3.5.3":{"locator":"type-fest@npm:3.5.3","descriptor":"type-fest@npm:^3.0.0"}}}
11
- {"value":"@ornikar/kitt@npm:34.6.4","children":{"type-fest@npm:3.5.3":{"locator":"type-fest@npm:3.5.3","descriptor":"type-fest@npm:^3.0.0"}}}
12
- {"value":"@ornikar/kitt@virtual:0ca324951f76c640d167f8be57292cc5427c8e53f9895c89483e077c606224ccbcf16ad9922d175a40513e38e935f54868149960f54484e24b48c8cccfab76e1#npm:34.6.4","children":{"type-fest@npm:3.5.3":{"locator":"type-fest@npm:3.5.3","descriptor":"type-fest@npm:^3.0.0"}}}
13
- {"value":"@ornikar/kitt@virtual:da577c8f16da6474f3dba62af00535e709b51ddb3169861379b7841bdd1533b5977dc9d9554ac25a380f243246f8920d037a3e2cbe381f0d98e059beacc155ed#npm:34.6.4","children":{"type-fest@npm:3.5.3":{"locator":"type-fest@npm:3.5.3","descriptor":"type-fest@npm:^3.0.0"}}}
14
- {"value":"@ornikar/learner-apps-shared@virtual:72efe2163a558449a8f66d9788562063236597b9b91f180e4c4438146efb94a72f711a8dd32272d11bfb7021567117fcfc487b64e6e65b2d2dd86917a2212195#workspace:@ornikar/learner-apps-shared","children":{"type-fest@npm:2.19.0":{"locator":"type-fest@npm:2.19.0","descriptor":"type-fest@npm:2.19.0"}}}
15
- {"value":"@ornikar/learner-apps-shared@virtual:74b4ee70bd6a38b10f925bd66e65d0142e2ee6418cefa62443ad0a5071d5e3013ade614aacfa04ed7ad7eb898eb4f5d788c3b246824acc7ce546f40d4046456a#workspace:@ornikar/learner-apps-shared","children":{"type-fest@npm:2.19.0":{"locator":"type-fest@npm:2.19.0","descriptor":"type-fest@npm:2.19.0"}}}
16
- {"value":"@ornikar/learner-apps-shared@workspace:@ornikar/learner-apps-shared","children":{"type-fest@npm:2.19.0":{"locator":"type-fest@npm:2.19.0","descriptor":"type-fest@npm:2.19.0"}}}
17
- {"value":"@ornikar/learner-webapp@workspace:@ornikar/learner-webapp","children":{"type-fest@npm:2.19.0":{"locator":"type-fest@npm:2.19.0","descriptor":"type-fest@npm:2.19.0"}}}
18
- {"value":"@ornikar/react-apollo@npm:5.7.3","children":{"type-fest@npm:2.19.0":{"locator":"type-fest@npm:2.19.0","descriptor":"type-fest@npm:^2.0.0"}}}
19
- {"value":"@ornikar/react-apollo@virtual:0ca324951f76c640d167f8be57292cc5427c8e53f9895c89483e077c606224ccbcf16ad9922d175a40513e38e935f54868149960f54484e24b48c8cccfab76e1#npm:5.7.3","children":{"type-fest@npm:2.19.0":{"locator":"type-fest@npm:2.19.0","descriptor":"type-fest@npm:^2.0.0"}}}
20
- {"value":"@ornikar/react-apollo@virtual:72efe2163a558449a8f66d9788562063236597b9b91f180e4c4438146efb94a72f711a8dd32272d11bfb7021567117fcfc487b64e6e65b2d2dd86917a2212195#npm:5.7.3","children":{"type-fest@npm:2.19.0":{"locator":"type-fest@npm:2.19.0","descriptor":"type-fest@npm:^2.0.0"}}}
21
- {"value":"@ornikar/react-app-error-provider@npm:7.10.0","children":{"type-fest@npm:2.19.0":{"locator":"type-fest@npm:2.19.0","descriptor":"type-fest@npm:^2.0.0"}}}
22
- {"value":"@ornikar/react-app-error-provider@virtual:0be1bed3bf44b487b4f72ea3695e753a329b20e6f34aad2b49c1ffe05302161a5820d406390378609bd21e85f867075b568762523dded617babeee2a4931d60c#npm:7.10.0","children":{"type-fest@npm:2.19.0":{"locator":"type-fest@npm:2.19.0","descriptor":"type-fest@npm:^2.0.0"}}}
23
- {"value":"@ornikar/react-app-error-provider@virtual:0ca324951f76c640d167f8be57292cc5427c8e53f9895c89483e077c606224ccbcf16ad9922d175a40513e38e935f54868149960f54484e24b48c8cccfab76e1#npm:7.10.0","children":{"type-fest@npm:2.19.0":{"locator":"type-fest@npm:2.19.0","descriptor":"type-fest@npm:^2.0.0"}}}
24
- {"value":"@ornikar/react-app-error-provider@virtual:72efe2163a558449a8f66d9788562063236597b9b91f180e4c4438146efb94a72f711a8dd32272d11bfb7021567117fcfc487b64e6e65b2d2dd86917a2212195#npm:7.10.0","children":{"type-fest@npm:2.19.0":{"locator":"type-fest@npm:2.19.0","descriptor":"type-fest@npm:^2.0.0"}}}
25
- {"value":"@ornikar/react-app-error-provider@virtual:74b4ee70bd6a38b10f925bd66e65d0142e2ee6418cefa62443ad0a5071d5e3013ade614aacfa04ed7ad7eb898eb4f5d788c3b246824acc7ce546f40d4046456a#npm:7.10.0","children":{"type-fest@npm:2.19.0":{"locator":"type-fest@npm:2.19.0","descriptor":"type-fest@npm:^2.0.0"}}}
26
- {"value":"@ornikar/react-app-error-provider@virtual:a263e33b1a50d76cea6ded5941f5756223998e8d38de08d4b0717fd7d8bf285b7eb6b3009a326693a41b27b271e9ce1b5a82c32769ac357127bcb51edde55b1f#npm:7.10.0","children":{"type-fest@npm:2.19.0":{"locator":"type-fest@npm:2.19.0","descriptor":"type-fest@npm:^2.0.0"}}}
27
- {"value":"@ornikar/react-forms@npm:13.4.12","children":{"type-fest@npm:3.5.3":{"locator":"type-fest@npm:3.5.3","descriptor":"type-fest@npm:^3.3.0"}}}
28
- {"value":"@ornikar/react-forms@virtual:6770e8087524c83554bada67a9fa4cb309227999c62fd9e0a8446680d3e08c41437b67326aaf58d9b680e0a5d9fad92496921281e9846e94d85c0deffdcef441#npm:13.4.12","children":{"type-fest@npm:3.5.3":{"locator":"type-fest@npm:3.5.3","descriptor":"type-fest@npm:^3.3.0"}}}
29
- {"value":"@ornikar/react-forms@virtual:72efe2163a558449a8f66d9788562063236597b9b91f180e4c4438146efb94a72f711a8dd32272d11bfb7021567117fcfc487b64e6e65b2d2dd86917a2212195#npm:13.4.12","children":{"type-fest@npm:3.5.3":{"locator":"type-fest@npm:3.5.3","descriptor":"type-fest@npm:^3.3.0"}}}
30
- {"value":"@ornikar/react-forms@virtual:cd4444764c288b532f422165f7e60a4431bd20c3cb04efb487d7ea857b10e04a1c2de14ae081851286c6600b42253b0cb167f5f2be42abd5ac9725dbc80da841#npm:13.4.12","children":{"type-fest@npm:3.5.3":{"locator":"type-fest@npm:3.5.3","descriptor":"type-fest@npm:^3.3.0"}}}
31
- {"value":"@ornikar/react-header@npm:12.6.4","children":{"type-fest@npm:3.5.3":{"locator":"type-fest@npm:3.5.3","descriptor":"type-fest@npm:^3.3.0"}}}
32
- {"value":"@ornikar/react-header@virtual:72efe2163a558449a8f66d9788562063236597b9b91f180e4c4438146efb94a72f711a8dd32272d11bfb7021567117fcfc487b64e6e65b2d2dd86917a2212195#npm:12.6.4","children":{"type-fest@npm:3.5.3":{"locator":"type-fest@npm:3.5.3","descriptor":"type-fest@npm:^3.3.0"}}}
33
- {"value":"@ornikar/react-mixpanel@npm:1.1.2","children":{"type-fest@npm:2.19.0":{"locator":"type-fest@npm:2.19.0","descriptor":"type-fest@npm:^2.0.0"}}}
34
- {"value":"@ornikar/react-mixpanel@virtual:0ca324951f76c640d167f8be57292cc5427c8e53f9895c89483e077c606224ccbcf16ad9922d175a40513e38e935f54868149960f54484e24b48c8cccfab76e1#npm:1.1.2","children":{"type-fest@npm:2.19.0":{"locator":"type-fest@npm:2.19.0","descriptor":"type-fest@npm:^2.0.0"}}}
35
- {"value":"@ornikar/react-mixpanel@virtual:72efe2163a558449a8f66d9788562063236597b9b91f180e4c4438146efb94a72f711a8dd32272d11bfb7021567117fcfc487b64e6e65b2d2dd86917a2212195#npm:1.1.2","children":{"type-fest@npm:2.19.0":{"locator":"type-fest@npm:2.19.0","descriptor":"type-fest@npm:^2.0.0"}}}
36
- {"value":"@ornikar/react-notification@npm:10.4.9","children":{"type-fest@npm:3.5.3":{"locator":"type-fest@npm:3.5.3","descriptor":"type-fest@npm:^3.3.0"}}}
37
- {"value":"@ornikar/react-notification@virtual:0ca324951f76c640d167f8be57292cc5427c8e53f9895c89483e077c606224ccbcf16ad9922d175a40513e38e935f54868149960f54484e24b48c8cccfab76e1#npm:10.4.9","children":{"type-fest@npm:3.5.3":{"locator":"type-fest@npm:3.5.3","descriptor":"type-fest@npm:^3.3.0"}}}
38
- {"value":"@ornikar/react-notification@virtual:72efe2163a558449a8f66d9788562063236597b9b91f180e4c4438146efb94a72f711a8dd32272d11bfb7021567117fcfc487b64e6e65b2d2dd86917a2212195#npm:10.4.9","children":{"type-fest@npm:3.5.3":{"locator":"type-fest@npm:3.5.3","descriptor":"type-fest@npm:^3.3.0"}}}
39
- {"value":"@ornikar/webapp-configs@npm:4.2.3","children":{"type-fest@npm:2.19.0":{"locator":"type-fest@npm:2.19.0","descriptor":"type-fest@npm:^2.0.0"}}}
40
- {"value":"@ornikar/webapp-configs@virtual:72efe2163a558449a8f66d9788562063236597b9b91f180e4c4438146efb94a72f711a8dd32272d11bfb7021567117fcfc487b64e6e65b2d2dd86917a2212195#npm:4.2.3","children":{"type-fest@npm:2.19.0":{"locator":"type-fest@npm:2.19.0","descriptor":"type-fest@npm:^2.0.0"}}}
41
- {"value":"ansi-escapes@npm:4.3.2","children":{"type-fest@npm:0.21.3":{"locator":"type-fest@npm:0.21.3","descriptor":"type-fest@npm:^0.21.3"}}}
42
- {"value":"boxen@npm:4.2.0","children":{"type-fest@npm:0.8.1":{"locator":"type-fest@npm:0.8.1","descriptor":"type-fest@npm:^0.8.1"}}}
43
- {"value":"boxen@npm:5.1.2","children":{"type-fest@npm:0.20.2":{"locator":"type-fest@npm:0.20.2","descriptor":"type-fest@npm:^0.20.2"}}}
44
- {"value":"check-package-dependencies@npm:6.3.1","children":{"type-fest@npm:3.5.3":{"locator":"type-fest@npm:3.5.3","descriptor":"type-fest@npm:^3.0.0"}}}
45
- {"value":"globals@npm:13.20.0","children":{"type-fest@npm:0.20.2":{"locator":"type-fest@npm:0.20.2","descriptor":"type-fest@npm:^0.20.2"}}}
46
- {"value":"load-json-file@npm:5.3.0","children":{"type-fest@npm:0.3.1":{"locator":"type-fest@npm:0.3.1","descriptor":"type-fest@npm:^0.3.0"}}}
47
- {"value":"load-json-file@npm:6.2.0","children":{"type-fest@npm:0.6.0":{"locator":"type-fest@npm:0.6.0","descriptor":"type-fest@npm:^0.6.0"}}}
48
- {"value":"meow@npm:8.1.2","children":{"type-fest@npm:0.18.1":{"locator":"type-fest@npm:0.18.1","descriptor":"type-fest@npm:^0.18.0"}}}
49
- {"value":"meow@npm:9.0.0","children":{"type-fest@npm:0.18.1":{"locator":"type-fest@npm:0.18.1","descriptor":"type-fest@npm:^0.18.0"}}}
50
- {"value":"msw@npm:0.29.0","children":{"type-fest@npm:1.4.0":{"locator":"type-fest@npm:1.4.0","descriptor":"type-fest@npm:^1.1.3"}}}
51
- {"value":"read-pkg-up@npm:7.0.1","children":{"type-fest@npm:0.8.1":{"locator":"type-fest@npm:0.8.1","descriptor":"type-fest@npm:^0.8.1"}}}
52
- {"value":"read-pkg@npm:5.2.0","children":{"type-fest@npm:0.6.0":{"locator":"type-fest@npm:0.6.0","descriptor":"type-fest@npm:^0.6.0"}}}
53
- {"value":"serialize-error@npm:6.0.0","children":{"type-fest@npm:0.12.0":{"locator":"type-fest@npm:0.12.0","descriptor":"type-fest@npm:^0.12.0"}}}
54
- {"value":"serialize-error@npm:7.0.1","children":{"type-fest@npm:0.13.1":{"locator":"type-fest@npm:0.13.1","descriptor":"type-fest@npm:^0.13.1"}}}
55
- {"value":"stacktrace-parser@npm:0.1.10","children":{"type-fest@npm:0.7.1":{"locator":"type-fest@npm:0.7.1","descriptor":"type-fest@npm:^0.7.1"}}}
56
- {"value":"tempy@npm:0.3.0","children":{"type-fest@npm:0.3.1":{"locator":"type-fest@npm:0.3.1","descriptor":"type-fest@npm:^0.3.1"}}}
57
- {"value":"tempy@npm:0.7.1","children":{"type-fest@npm:0.16.0":{"locator":"type-fest@npm:0.16.0","descriptor":"type-fest@npm:^0.16.0"}}}
58
- {"value":"write-pkg@npm:4.0.0","children":{"type-fest@npm:0.4.1":{"locator":"type-fest@npm:0.4.1","descriptor":"type-fest@npm:^0.4.1"}}}
@@ -1,19 +0,0 @@
1
- {"value":"@ornikar/learner-apps-shared@virtual:72efe2163a558449a8f66d9788562063236597b9b91f180e4c4438146efb94a72f711a8dd32272d11bfb7021567117fcfc487b64e6e65b2d2dd86917a2212195#workspace:@ornikar/learner-apps-shared","children":{"@ornikar/validators@npm:7.3.0":{"locator":"@ornikar/validators@npm:7.3.0","descriptor":"@ornikar/validators@npm:7.3.0"}}}
2
- {"value":"@ornikar/learner-apps-shared@virtual:74b4ee70bd6a38b10f925bd66e65d0142e2ee6418cefa62443ad0a5071d5e3013ade614aacfa04ed7ad7eb898eb4f5d788c3b246824acc7ce546f40d4046456a#workspace:@ornikar/learner-apps-shared","children":{"@ornikar/validators@npm:7.3.0":{"locator":"@ornikar/validators@npm:7.3.0","descriptor":"@ornikar/validators@npm:7.3.0"}}}
3
- {"value":"@ornikar/learner-apps-shared@workspace:@ornikar/learner-apps-shared","children":{"@ornikar/validators@npm:7.3.0":{"locator":"@ornikar/validators@npm:7.3.0","descriptor":"@ornikar/validators@npm:7.3.0"}}}
4
- {"value":"@ornikar/learner-native-app@workspace:@ornikar/learner-native-app","children":{"@ornikar/validators@npm:7.3.0":{"locator":"@ornikar/validators@npm:7.3.0","descriptor":"@ornikar/validators@npm:7.3.0"}}}
5
- {"value":"@ornikar/learner-webapp@workspace:@ornikar/learner-webapp","children":{"@ornikar/validators@npm:7.3.0":{"locator":"@ornikar/validators@npm:7.3.0","descriptor":"@ornikar/validators@npm:7.3.0"}}}
6
- {"value":"@ornikar/react-forms-universal@npm:12.2.0","children":{"@ornikar/validators@npm:7.2.11":{"locator":"@ornikar/validators@npm:7.2.11","descriptor":"@ornikar/validators@npm:^7.2.10"}}}
7
- {"value":"@ornikar/react-forms-universal@virtual:0be1bed3bf44b487b4f72ea3695e753a329b20e6f34aad2b49c1ffe05302161a5820d406390378609bd21e85f867075b568762523dded617babeee2a4931d60c#npm:12.2.0","children":{"@ornikar/validators@npm:7.2.11":{"locator":"@ornikar/validators@npm:7.2.11","descriptor":"@ornikar/validators@npm:^7.2.10"}}}
8
- {"value":"@ornikar/react-forms-universal@virtual:0ca324951f76c640d167f8be57292cc5427c8e53f9895c89483e077c606224ccbcf16ad9922d175a40513e38e935f54868149960f54484e24b48c8cccfab76e1#npm:12.2.0","children":{"@ornikar/validators@npm:7.2.11":{"locator":"@ornikar/validators@npm:7.2.11","descriptor":"@ornikar/validators@npm:^7.2.10"}}}
9
- {"value":"@ornikar/react-forms-universal@virtual:72efe2163a558449a8f66d9788562063236597b9b91f180e4c4438146efb94a72f711a8dd32272d11bfb7021567117fcfc487b64e6e65b2d2dd86917a2212195#npm:12.2.0","children":{"@ornikar/validators@npm:7.2.11":{"locator":"@ornikar/validators@npm:7.2.11","descriptor":"@ornikar/validators@npm:^7.2.10"}}}
10
- {"value":"@ornikar/react-forms-universal@virtual:74b4ee70bd6a38b10f925bd66e65d0142e2ee6418cefa62443ad0a5071d5e3013ade614aacfa04ed7ad7eb898eb4f5d788c3b246824acc7ce546f40d4046456a#npm:12.2.0","children":{"@ornikar/validators@npm:7.2.11":{"locator":"@ornikar/validators@npm:7.2.11","descriptor":"@ornikar/validators@npm:^7.2.10"}}}
11
- {"value":"@ornikar/react-forms-universal@virtual:a263e33b1a50d76cea6ded5941f5756223998e8d38de08d4b0717fd7d8bf285b7eb6b3009a326693a41b27b271e9ce1b5a82c32769ac357127bcb51edde55b1f#npm:12.2.0","children":{"@ornikar/validators@npm:7.2.11":{"locator":"@ornikar/validators@npm:7.2.11","descriptor":"@ornikar/validators@npm:^7.2.10"}}}
12
- {"value":"@ornikar/react-validators@npm:8.0.10","children":{"@ornikar/validators@npm:7.3.0":{"locator":"@ornikar/validators@npm:7.3.0","descriptor":"@ornikar/validators@npm:^7.3.0"}}}
13
- {"value":"@ornikar/react-validators@npm:8.0.8","children":{"@ornikar/validators@npm:7.2.11":{"locator":"@ornikar/validators@npm:7.2.11","descriptor":"@ornikar/validators@npm:^7.2.11"}}}
14
- {"value":"@ornikar/react-validators@virtual:085310bb81d85a57193990d1ee74e85e6e6450b9384d4da43f24e3e764c9745557583a229c8213ce540b91033f5e655b5121c971e0a3a5ad698d5eb2c629d846#npm:8.0.8","children":{"@ornikar/validators@npm:7.2.11":{"locator":"@ornikar/validators@npm:7.2.11","descriptor":"@ornikar/validators@npm:^7.2.11"}}}
15
- {"value":"@ornikar/react-validators@virtual:0ca324951f76c640d167f8be57292cc5427c8e53f9895c89483e077c606224ccbcf16ad9922d175a40513e38e935f54868149960f54484e24b48c8cccfab76e1#npm:8.0.10","children":{"@ornikar/validators@npm:7.3.0":{"locator":"@ornikar/validators@npm:7.3.0","descriptor":"@ornikar/validators@npm:^7.3.0"}}}
16
- {"value":"@ornikar/react-validators@virtual:2461a6aeecc99f352c5f65b0edebf5e7cae3321973320f143a89cdea29fd814895846db5b05845a6f72a92d056a24a389c6a29326c997b79d163846b510f6081#npm:8.0.8","children":{"@ornikar/validators@npm:7.2.11":{"locator":"@ornikar/validators@npm:7.2.11","descriptor":"@ornikar/validators@npm:^7.2.11"}}}
17
- {"value":"@ornikar/react-validators@virtual:5aeba2480109c20d26c87f1e67d4063eb6a5e9e1ffb5041e41df1f1b64e330b7cc0429c7ad153e9ad5b6e1a420cf4c6f9b5c8247be874e99d0778808010f3a34#npm:8.0.8","children":{"@ornikar/validators@npm:7.2.11":{"locator":"@ornikar/validators@npm:7.2.11","descriptor":"@ornikar/validators@npm:^7.2.11"}}}
18
- {"value":"@ornikar/react-validators@virtual:72efe2163a558449a8f66d9788562063236597b9b91f180e4c4438146efb94a72f711a8dd32272d11bfb7021567117fcfc487b64e6e65b2d2dd86917a2212195#npm:8.0.10","children":{"@ornikar/validators@npm:7.3.0":{"locator":"@ornikar/validators@npm:7.3.0","descriptor":"@ornikar/validators@npm:^7.3.0"}}}
19
- {"value":"@ornikar/react-validators@virtual:74b4ee70bd6a38b10f925bd66e65d0142e2ee6418cefa62443ad0a5071d5e3013ade614aacfa04ed7ad7eb898eb4f5d788c3b246824acc7ce546f40d4046456a#npm:8.0.10","children":{"@ornikar/validators@npm:7.3.0":{"locator":"@ornikar/validators@npm:7.3.0","descriptor":"@ornikar/validators@npm:^7.3.0"}}}
package/tests/tests.js DELETED
@@ -1,95 +0,0 @@
1
- import { strictEqual } from 'assert/strict';
2
- import { Configuration } from '@yarnpkg/core';
3
- import fs from 'fs';
4
- import {parseYarnWhy} from '../lib/readAndParseYarnWhy.js';
5
- import { identifyDuplicates } from '../lib/identifyDuplicates.js';
6
- import { displayDuplicates } from '../lib/displayDuplicates.js';
7
-
8
- const configuration = Configuration.create(process.cwd());
9
- configuration.values.set('enableColors', false);
10
-
11
- const loadAndAssert = (fileName, expected) => {
12
- const fileContent = fs.readFileSync(new URL(`./fixtures/${fileName}`, import.meta.url), 'utf-8');
13
- const content = parseYarnWhy(fileContent);
14
- const duplicates = identifyDuplicates(content);
15
- const logs = [];
16
- displayDuplicates(duplicates, (log = '') => logs.push(log), configuration);
17
- strictEqual( logs.join('\n'), expected);
18
- };
19
- // no duplicates
20
- loadAndAssert('date-fns.txt', 'date-fns@npm:1.30.1\n' +
21
- '- @ornikar/learner-apps-shared@workspace:@ornikar/learner-apps-shared (date-fns@npm:1.30.1)\n' +
22
- '- @ornikar/learner-native-app@workspace:@ornikar/learner-native-app (date-fns@npm:1.30.1)\n' +
23
- '- @ornikar/learner-webapp@workspace:@ornikar/learner-webapp (date-fns@npm:1.30.1)\n' +
24
- '- date-fns-timezone@npm:0.1.4 (date-fns@npm:^1.29.0)\n' +
25
- '- listr-verbose-renderer@npm:0.5.0 (date-fns@npm:^1.27.2)\n');
26
- loadAndAssert('type-fest.txt', 'type-fest@npm:3.5.3\n' +
27
- '- @ornikar/api-helpers@npm:4.9.8 (type-fest@npm:^3.3.0)\n' +
28
- '- @ornikar/kitt-universal@npm:9.47.2 (type-fest@npm:^3.0.0)\n' +
29
- '- @ornikar/kitt@npm:34.6.4 (type-fest@npm:^3.0.0)\n' +
30
- '- @ornikar/react-forms@npm:13.4.12 (type-fest@npm:^3.3.0)\n' +
31
- '- @ornikar/react-header@npm:12.6.4 (type-fest@npm:^3.3.0)\n' +
32
- '- @ornikar/react-notification@npm:10.4.9 (type-fest@npm:^3.3.0)\n' +
33
- '- check-package-dependencies@npm:6.3.1 (type-fest@npm:^3.0.0)\n' +
34
- '\n' +
35
- 'type-fest@npm:2.19.0\n' +
36
- '- @ornikar/learner-apps-shared@workspace:@ornikar/learner-apps-shared (type-fest@npm:2.19.0)\n' +
37
- '- @ornikar/learner-webapp@workspace:@ornikar/learner-webapp (type-fest@npm:2.19.0)\n' +
38
- '- @ornikar/react-apollo@npm:5.7.3 (type-fest@npm:^2.0.0)\n' +
39
- '- @ornikar/react-app-error-provider@npm:7.10.0 (type-fest@npm:^2.0.0)\n' +
40
- '- @ornikar/react-mixpanel@npm:1.1.2 (type-fest@npm:^2.0.0)\n' +
41
- '- @ornikar/webapp-configs@npm:4.2.3 (type-fest@npm:^2.0.0)\n' +
42
- '\n' +
43
- 'type-fest@npm:1.4.0\n' +
44
- '- msw@npm:0.29.0 (type-fest@npm:^1.1.3)\n' +
45
- '\n' +
46
- 'type-fest@npm:0.21.3\n' +
47
- '- ansi-escapes@npm:4.3.2 (type-fest@npm:^0.21.3)\n' +
48
- '\n' +
49
- 'type-fest@npm:0.20.2\n' +
50
- '- boxen@npm:5.1.2 (type-fest@npm:^0.20.2)\n' +
51
- '- globals@npm:13.20.0 (type-fest@npm:^0.20.2)\n' +
52
- '\n' +
53
- 'type-fest@npm:0.18.1\n' +
54
- '- meow@npm:8.1.2 (type-fest@npm:^0.18.0)\n' +
55
- '- meow@npm:9.0.0 (type-fest@npm:^0.18.0)\n' +
56
- '\n' +
57
- 'type-fest@npm:0.16.0\n' +
58
- '- tempy@npm:0.7.1 (type-fest@npm:^0.16.0)\n' +
59
- '\n' +
60
- 'type-fest@npm:0.13.1\n' +
61
- '- serialize-error@npm:7.0.1 (type-fest@npm:^0.13.1)\n' +
62
- '\n' +
63
- 'type-fest@npm:0.12.0\n' +
64
- '- serialize-error@npm:6.0.0 (type-fest@npm:^0.12.0)\n' +
65
- '\n' +
66
- 'type-fest@npm:0.8.1\n' +
67
- '- boxen@npm:4.2.0 (type-fest@npm:^0.8.1)\n' +
68
- '- read-pkg-up@npm:7.0.1 (type-fest@npm:^0.8.1)\n' +
69
- '\n' +
70
- 'type-fest@npm:0.7.1\n' +
71
- '- stacktrace-parser@npm:0.1.10 (type-fest@npm:^0.7.1)\n' +
72
- '\n' +
73
- 'type-fest@npm:0.6.0\n' +
74
- '- load-json-file@npm:6.2.0 (type-fest@npm:^0.6.0)\n' +
75
- '- read-pkg@npm:5.2.0 (type-fest@npm:^0.6.0)\n' +
76
- '\n' +
77
- 'type-fest@npm:0.4.1\n' +
78
- '- write-pkg@npm:4.0.0 (type-fest@npm:^0.4.1)\n' +
79
- '\n' +
80
- 'type-fest@npm:0.3.1\n' +
81
- '- load-json-file@npm:5.3.0 (type-fest@npm:^0.3.0)\n' +
82
- '- tempy@npm:0.3.0 (type-fest@npm:^0.3.1)\n'); // simple duplicates
83
- loadAndAssert('native-base.txt',
84
- 'native-base@patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::version=3.4.18&hash=f36c02&locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A.\n' +
85
- '- @ornikar/kitt-universal@npm:9.47.2 (native-base@patch:native-base@npm%3A3.4.18#./.yarn/patches/native-base-npm-3.4.18-63dd34e5ad.patch::locator=%40ornikar%2Flearner-apps-monorepo%40workspace%3A.)\n'); // example with patch
86
- loadAndAssert('validators.txt',
87
- '@ornikar/validators@npm:7.3.0\n' +
88
- '- @ornikar/learner-apps-shared@workspace:@ornikar/learner-apps-shared (@ornikar/validators@npm:7.3.0)\n' +
89
- '- @ornikar/learner-native-app@workspace:@ornikar/learner-native-app (@ornikar/validators@npm:7.3.0)\n' +
90
- '- @ornikar/learner-webapp@workspace:@ornikar/learner-webapp (@ornikar/validators@npm:7.3.0)\n' +
91
- '- @ornikar/react-validators@npm:8.0.10 (@ornikar/validators@npm:^7.3.0)\n' +
92
- '\n' +
93
- '@ornikar/validators@npm:7.2.11\n' +
94
- '- @ornikar/react-forms-universal@npm:12.2.0 (@ornikar/validators@npm:^7.2.10)\n' +
95
- '- @ornikar/react-validators@npm:8.0.8 (@ornikar/validators@npm:^7.2.11)\n'); // complex duplicates