@antongolub/lockfile 0.0.0-snapshot.39 → 0.0.0-snapshot.41
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/README.md +1 -1
- package/package.json +4 -3
- package/target/cjs/index.cjs +64 -23
- package/target/dts/interface.d.ts +1 -1
- package/target/dts/util.d.ts +4 -1
- package/target/esm/index.mjs +52 -17
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
<p><img alt="@antongolub/lockfile" src="./pics/pic.png" align="right" width="300">
|
|
5
5
|
Each package manager brings its own philosophy of how to describe, store and control project dependencies.
|
|
6
|
-
It
|
|
6
|
+
It <i>seems</i> acceptable for developers, but literally becomes a <strike>pain in *** ***</strike> headache for isec, devops and release engineers.
|
|
7
7
|
This lib is a naive attempt to build a pm-independent, generic, extensible and reliable deps representation.
|
|
8
8
|
|
|
9
9
|
The `package.json` manifest contains its own deps requirements, the `lockfile` holds the deps resolution snapshot<sup>*</sup>,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antongolub/lockfile",
|
|
3
|
-
"version": "0.0.0-snapshot.
|
|
3
|
+
"version": "0.0.0-snapshot.41",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -54,7 +54,8 @@
|
|
|
54
54
|
"build:cjs": "yarn run build:esm -- --cjs",
|
|
55
55
|
"build:dts": "tsc --emitDeclarationOnly --skipLibCheck --outDir target/dts",
|
|
56
56
|
"test": "yarn test:unit",
|
|
57
|
-
"test:unit": "
|
|
57
|
+
"test:unit": "c8 -r lcov -r text -o target/coverage -x src/scripts -x src/test uvu -r tsm -i helpers 'src/test/ts/'",
|
|
58
|
+
"test:debug": "DEBUG=true TEMP=temp yarn run test:unit",
|
|
58
59
|
"publish:snap": "yarn build && npm publish --no-git-tag-version --tag snapshot"
|
|
59
60
|
},
|
|
60
61
|
"files": [
|
|
@@ -81,5 +82,5 @@
|
|
|
81
82
|
"url": "https://github.com/antongolub/lockfile/issues"
|
|
82
83
|
},
|
|
83
84
|
"homepage": "https://github.com/antongolub/lockfile#readme",
|
|
84
|
-
"packageManager": "yarn@
|
|
85
|
+
"packageManager": "yarn@4.0.1"
|
|
85
86
|
}
|
package/target/cjs/index.cjs
CHANGED
|
@@ -166,17 +166,33 @@ var debug = Object.assign((...chunks) => {
|
|
|
166
166
|
console.log(...chunks);
|
|
167
167
|
}, {
|
|
168
168
|
enable: process.env.DEBUG,
|
|
169
|
-
json(
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
169
|
+
json(_0) {
|
|
170
|
+
return __async(this, arguments, function* (data, name = `debug-${Math.random().toString(16).slice(2)}.json`, base) {
|
|
171
|
+
if (!this.enable)
|
|
172
|
+
return;
|
|
173
|
+
if (typeof data === "string") {
|
|
174
|
+
yield this.json(name, data);
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const _data = typeof data === "function" ? data() : data;
|
|
178
|
+
const _base = base || (yield this.tempy());
|
|
179
|
+
yield import_promises2.default.writeFile(import_node_path.default.resolve(_base, name), JSON.stringify(_data, null, 2));
|
|
180
|
+
});
|
|
181
|
+
},
|
|
182
|
+
tempy() {
|
|
183
|
+
return __async(this, null, function* () {
|
|
184
|
+
const temp = import_node_path.default.resolve(process.cwd(), process.env.TEMP || "temp");
|
|
185
|
+
yield import_promises2.default.mkdir(temp, { recursive: true });
|
|
186
|
+
return temp;
|
|
187
|
+
});
|
|
178
188
|
}
|
|
179
189
|
});
|
|
190
|
+
var mergeDeps = (...deps) => {
|
|
191
|
+
const _deps = deps.filter(Boolean);
|
|
192
|
+
if (!_deps.length)
|
|
193
|
+
return;
|
|
194
|
+
return Object.assign({}, ..._deps);
|
|
195
|
+
};
|
|
180
196
|
var unique = (arr) => [...new Set(arr)];
|
|
181
197
|
|
|
182
198
|
// src/main/ts/analyze.ts
|
|
@@ -687,26 +703,35 @@ var preparse = (value) => {
|
|
|
687
703
|
}, "").join("\n");
|
|
688
704
|
return (0, import_js_yaml.load)(_value);
|
|
689
705
|
};
|
|
690
|
-
var parse3 = (value,
|
|
691
|
-
const manifest = JSON.parse(
|
|
706
|
+
var parse3 = (value, ...pkgs) => {
|
|
707
|
+
const manifest = JSON.parse(pkgs[0]);
|
|
708
|
+
const manifests = Object.fromEntries(pkgs.map((p) => {
|
|
709
|
+
const manifest2 = JSON.parse(p);
|
|
710
|
+
return [manifest2.name, manifest2];
|
|
711
|
+
}));
|
|
692
712
|
const raw = preparse(value);
|
|
693
713
|
const snapshot = {};
|
|
694
714
|
Object.entries(raw).forEach((value2) => {
|
|
715
|
+
var _a, _b;
|
|
695
716
|
const [_key, _entry] = value2;
|
|
696
717
|
const { version: version6, integrity, dependencies, optionalDependencies, resolved } = _entry;
|
|
697
718
|
const hashes = parseIntegrity(integrity);
|
|
698
719
|
const source = parseResolution3(resolved);
|
|
699
720
|
const chunks = _key.split(", ");
|
|
700
721
|
const names = unique(chunks.map((c) => c.slice(0, c.indexOf("@", 1))));
|
|
722
|
+
const isLocal = version6 === "0.0.0-use.local";
|
|
701
723
|
for (const name of names) {
|
|
702
724
|
const ranges = chunks.filter((c) => c.startsWith(`${name}@`)).map((r) => r.slice(r.indexOf("@", 1) + 1)).sort();
|
|
703
725
|
const key = `${name}@${version6}`;
|
|
726
|
+
const _dependencies = isLocal && ((_a = manifests[name]) == null ? void 0 : _a.dependencies) || dependencies;
|
|
727
|
+
const _devDependencies = isLocal && ((_b = manifests[name]) == null ? void 0 : _b.devDependencies);
|
|
704
728
|
snapshot[key] = {
|
|
705
729
|
name,
|
|
706
730
|
version: version6,
|
|
707
731
|
ranges,
|
|
708
732
|
hashes,
|
|
709
|
-
dependencies,
|
|
733
|
+
dependencies: _dependencies,
|
|
734
|
+
devDependencies: _devDependencies,
|
|
710
735
|
optionalDependencies,
|
|
711
736
|
source
|
|
712
737
|
};
|
|
@@ -734,7 +759,7 @@ var preformat4 = (idx) => {
|
|
|
734
759
|
const lf = {};
|
|
735
760
|
const rangemap = {};
|
|
736
761
|
Object.values(snapshot).forEach((entry) => {
|
|
737
|
-
const { name, version: version6, ranges, hashes, dependencies, optionalDependencies, source } = entry;
|
|
762
|
+
const { name, version: version6, ranges, hashes, devDependencies, dependencies, optionalDependencies, source } = entry;
|
|
738
763
|
const resolved = formatResolution3(source);
|
|
739
764
|
const alias = rangemap[resolved];
|
|
740
765
|
const integrity = Object.entries(hashes).map(([k, v]) => `${k}-${v}`).join(" ");
|
|
@@ -745,12 +770,15 @@ var preformat4 = (idx) => {
|
|
|
745
770
|
delete lf[alias.key];
|
|
746
771
|
}
|
|
747
772
|
const key = keys.join(", ");
|
|
773
|
+
const _dependencies = mergeDeps(dependencies, devDependencies);
|
|
774
|
+
if (_dependencies)
|
|
775
|
+
sortObject(_dependencies);
|
|
748
776
|
rangemap[resolved] = { keys, key, name };
|
|
749
777
|
lf[key] = {
|
|
750
778
|
version: version6,
|
|
751
779
|
resolved,
|
|
752
780
|
integrity,
|
|
753
|
-
dependencies,
|
|
781
|
+
dependencies: _dependencies,
|
|
754
782
|
optionalDependencies
|
|
755
783
|
};
|
|
756
784
|
});
|
|
@@ -812,16 +840,24 @@ var version5 = "yarn-berry";
|
|
|
812
840
|
var check5 = (value) => value.includes(`
|
|
813
841
|
__metadata:
|
|
814
842
|
version:`);
|
|
815
|
-
var parse4 = (lockfile,
|
|
816
|
-
const manifest = JSON.parse(
|
|
843
|
+
var parse4 = (lockfile, ...pkgs) => {
|
|
844
|
+
const manifest = JSON.parse(pkgs[0]);
|
|
845
|
+
const manifests = Object.fromEntries(pkgs.map((p) => {
|
|
846
|
+
const manifest2 = JSON.parse(p);
|
|
847
|
+
return [manifest2.name, manifest2];
|
|
848
|
+
}));
|
|
817
849
|
const snapshot = {};
|
|
818
850
|
const raw = (0, import_js_yaml2.load)(lockfile);
|
|
819
851
|
delete raw.__metadata;
|
|
820
852
|
Object.entries(raw).forEach((value) => {
|
|
853
|
+
var _a, _b;
|
|
821
854
|
const [_key, _entry] = value;
|
|
822
855
|
const { version: version6, checksum, dependencies, dependenciesMeta, optionalDependencies, peerDependencies, peerDependenciesMeta, resolution, bin, conditions } = _entry;
|
|
823
856
|
const chunks = _key.split(", ");
|
|
824
857
|
const names = unique(chunks.map((c) => c.slice(0, c.indexOf("@", 1))));
|
|
858
|
+
const isLocal = version6 === "0.0.0-use.local";
|
|
859
|
+
const hashes = parseIntegrity(checksum);
|
|
860
|
+
const source = parseResolution4(resolution);
|
|
825
861
|
for (const name of names) {
|
|
826
862
|
const key = `${name}@${version6}`;
|
|
827
863
|
if (_key.includes("#")) {
|
|
@@ -833,15 +869,16 @@ var parse4 = (lockfile, pkg) => {
|
|
|
833
869
|
return;
|
|
834
870
|
}
|
|
835
871
|
const ranges = chunks.filter((c) => c.startsWith(`${name}@`)).map((r) => r.slice(r.indexOf("@", 1) + 1)).map(normalizeReference);
|
|
836
|
-
const
|
|
837
|
-
const
|
|
872
|
+
const _dependencies = normalizeDeps(isLocal && ((_a = manifests[name]) == null ? void 0 : _a.dependencies) || dependencies);
|
|
873
|
+
const _devDependencies = normalizeDeps(isLocal && ((_b = manifests[name]) == null ? void 0 : _b.devDependencies));
|
|
838
874
|
snapshot[key] = {
|
|
839
875
|
name,
|
|
840
876
|
version: version6,
|
|
841
877
|
ranges,
|
|
842
878
|
hashes,
|
|
843
879
|
source,
|
|
844
|
-
dependencies:
|
|
880
|
+
dependencies: _dependencies,
|
|
881
|
+
devDependencies: _devDependencies,
|
|
845
882
|
dependenciesMeta,
|
|
846
883
|
optionalDependencies: normalizeDeps(optionalDependencies),
|
|
847
884
|
peerDependencies: normalizeDeps(peerDependencies),
|
|
@@ -870,12 +907,13 @@ var parse4 = (lockfile, pkg) => {
|
|
|
870
907
|
debug.json("yarn-berry-snapshot.json", snapshot);
|
|
871
908
|
return snapshot;
|
|
872
909
|
};
|
|
873
|
-
var preformat5 = (idx) => {
|
|
910
|
+
var preformat5 = (idx, { __metadata } = {}) => {
|
|
874
911
|
const { snapshot } = idx;
|
|
875
912
|
const lf = {};
|
|
876
913
|
const rangemap = {};
|
|
914
|
+
const isYarn4 = (__metadata == null ? void 0 : __metadata.version) >= 7;
|
|
877
915
|
Object.values(snapshot).forEach((entry) => {
|
|
878
|
-
const { name, version: version6, ranges, hashes: { checksum }, dependencies, dependenciesMeta, optionalDependencies, peerDependencies, peerDependenciesMeta, source, patch, bin, conditions } = entry;
|
|
916
|
+
const { name, version: version6, ranges, hashes: { checksum }, devDependencies, dependencies, dependenciesMeta, optionalDependencies, peerDependencies, peerDependenciesMeta, source, patch, bin, conditions } = entry;
|
|
879
917
|
const resolution = formatResolution4(source);
|
|
880
918
|
const alias = rangemap[resolution];
|
|
881
919
|
const isLocal = version6 === "0.0.0-use.local";
|
|
@@ -888,11 +926,14 @@ var preformat5 = (idx) => {
|
|
|
888
926
|
delete lf[alias.key];
|
|
889
927
|
}
|
|
890
928
|
const key = keys.join(", ");
|
|
929
|
+
const _dependencies = mergeDeps(dependencies, devDependencies);
|
|
930
|
+
if (_dependencies)
|
|
931
|
+
sortObject(_dependencies);
|
|
891
932
|
rangemap[resolution] = { keys, key, name };
|
|
892
933
|
lf[key] = {
|
|
893
934
|
version: version6,
|
|
894
935
|
resolution,
|
|
895
|
-
dependencies: formatDeps(
|
|
936
|
+
dependencies: formatDeps(_dependencies, { semverAsNpm: isYarn4, isLocal: !isLocal }),
|
|
896
937
|
optionalDependencies: formatDeps(optionalDependencies),
|
|
897
938
|
peerDependencies: formatDeps(peerDependencies),
|
|
898
939
|
dependenciesMeta,
|
|
@@ -919,7 +960,7 @@ var format5 = (snapshot, { __metadata = {
|
|
|
919
960
|
} } = {}) => {
|
|
920
961
|
const lines = (0, import_js_yaml2.dump)(__spreadValues({
|
|
921
962
|
__metadata
|
|
922
|
-
}, preformat5({ snapshot })), {
|
|
963
|
+
}, preformat5({ snapshot }, { __metadata })), {
|
|
923
964
|
quotingType: '"',
|
|
924
965
|
flowLevel: -1,
|
|
925
966
|
lineWidth: -1,
|
|
@@ -83,7 +83,7 @@ export type IFormatOpts = {
|
|
|
83
83
|
};
|
|
84
84
|
export type IFormat = (snapshot: TSnapshot, opts?: IFormatOpts) => string;
|
|
85
85
|
export type IFormatReference = (value: string, opts: any) => string | number;
|
|
86
|
-
export type IPreformat<T> = (idx: TSnapshotIndex) => T;
|
|
86
|
+
export type IPreformat<T> = (idx: TSnapshotIndex, opts?: IFormatOpts) => T;
|
|
87
87
|
export type ICheck = (input: string) => boolean;
|
|
88
88
|
export type IParseResolution = (input: string) => TResolution;
|
|
89
89
|
export type IFormatResolution = (resolution: TResolution) => string;
|
package/target/dts/util.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { TDependencies } from "./interface";
|
|
1
2
|
export declare const sortObject: <T extends Record<string, any>>(unordered: T, predicate?: (a: [string, any], b: [string, any]) => number) => T;
|
|
2
3
|
export declare const flushObject: (obj: Record<string, any>) => Record<string, any>;
|
|
3
4
|
export declare const loadContents: (value: string) => Promise<string>;
|
|
4
5
|
export declare const debug: ((...chunks: any[]) => void) & {
|
|
5
6
|
enable: string | undefined;
|
|
6
|
-
json(data: any, name?: any, base?: string): void
|
|
7
|
+
json(data: any, name?: any, base?: string): Promise<void>;
|
|
8
|
+
tempy(): Promise<string>;
|
|
7
9
|
};
|
|
10
|
+
export declare const mergeDeps: (...deps: (TDependencies | undefined)[]) => TDependencies | undefined;
|
|
8
11
|
export declare const unique: (arr: string[]) => string[];
|
package/target/esm/index.mjs
CHANGED
|
@@ -88,17 +88,29 @@ var debug = Object.assign((...chunks) => {
|
|
|
88
88
|
console.log(...chunks);
|
|
89
89
|
}, {
|
|
90
90
|
enable: process.env.DEBUG,
|
|
91
|
-
json(data, name = `debug-${Math.random().toString(16).slice(2)}.json`, base
|
|
91
|
+
async json(data, name = `debug-${Math.random().toString(16).slice(2)}.json`, base) {
|
|
92
92
|
if (!this.enable)
|
|
93
93
|
return;
|
|
94
94
|
if (typeof data === "string") {
|
|
95
|
-
this.json(name, data);
|
|
95
|
+
await this.json(name, data);
|
|
96
96
|
return;
|
|
97
97
|
}
|
|
98
98
|
const _data = typeof data === "function" ? data() : data;
|
|
99
|
-
|
|
99
|
+
const _base = base || await this.tempy();
|
|
100
|
+
await fs2.writeFile(path.resolve(_base, name), JSON.stringify(_data, null, 2));
|
|
101
|
+
},
|
|
102
|
+
async tempy() {
|
|
103
|
+
const temp = path.resolve(process.cwd(), process.env.TEMP || "temp");
|
|
104
|
+
await fs2.mkdir(temp, { recursive: true });
|
|
105
|
+
return temp;
|
|
100
106
|
}
|
|
101
107
|
});
|
|
108
|
+
var mergeDeps = (...deps) => {
|
|
109
|
+
const _deps = deps.filter(Boolean);
|
|
110
|
+
if (!_deps.length)
|
|
111
|
+
return;
|
|
112
|
+
return Object.assign({}, ..._deps);
|
|
113
|
+
};
|
|
102
114
|
var unique = (arr) => [...new Set(arr)];
|
|
103
115
|
|
|
104
116
|
// src/main/ts/analyze.ts
|
|
@@ -606,8 +618,12 @@ var preparse = (value) => {
|
|
|
606
618
|
}, "").join("\n");
|
|
607
619
|
return load(_value);
|
|
608
620
|
};
|
|
609
|
-
var parse3 = (value,
|
|
610
|
-
const manifest = JSON.parse(
|
|
621
|
+
var parse3 = (value, ...pkgs) => {
|
|
622
|
+
const manifest = JSON.parse(pkgs[0]);
|
|
623
|
+
const manifests = Object.fromEntries(pkgs.map((p) => {
|
|
624
|
+
const manifest2 = JSON.parse(p);
|
|
625
|
+
return [manifest2.name, manifest2];
|
|
626
|
+
}));
|
|
611
627
|
const raw = preparse(value);
|
|
612
628
|
const snapshot = {};
|
|
613
629
|
Object.entries(raw).forEach((value2) => {
|
|
@@ -617,15 +633,19 @@ var parse3 = (value, pkg) => {
|
|
|
617
633
|
const source = parseResolution3(resolved);
|
|
618
634
|
const chunks = _key.split(", ");
|
|
619
635
|
const names = unique(chunks.map((c) => c.slice(0, c.indexOf("@", 1))));
|
|
636
|
+
const isLocal = version6 === "0.0.0-use.local";
|
|
620
637
|
for (const name of names) {
|
|
621
638
|
const ranges = chunks.filter((c) => c.startsWith(`${name}@`)).map((r) => r.slice(r.indexOf("@", 1) + 1)).sort();
|
|
622
639
|
const key = `${name}@${version6}`;
|
|
640
|
+
const _dependencies = isLocal && manifests[name]?.dependencies || dependencies;
|
|
641
|
+
const _devDependencies = isLocal && manifests[name]?.devDependencies;
|
|
623
642
|
snapshot[key] = {
|
|
624
643
|
name,
|
|
625
644
|
version: version6,
|
|
626
645
|
ranges,
|
|
627
646
|
hashes,
|
|
628
|
-
dependencies,
|
|
647
|
+
dependencies: _dependencies,
|
|
648
|
+
devDependencies: _devDependencies,
|
|
629
649
|
optionalDependencies,
|
|
630
650
|
source
|
|
631
651
|
};
|
|
@@ -653,7 +673,7 @@ var preformat4 = (idx) => {
|
|
|
653
673
|
const lf = {};
|
|
654
674
|
const rangemap = {};
|
|
655
675
|
Object.values(snapshot).forEach((entry) => {
|
|
656
|
-
const { name, version: version6, ranges, hashes, dependencies, optionalDependencies, source } = entry;
|
|
676
|
+
const { name, version: version6, ranges, hashes, devDependencies, dependencies, optionalDependencies, source } = entry;
|
|
657
677
|
const resolved = formatResolution3(source);
|
|
658
678
|
const alias = rangemap[resolved];
|
|
659
679
|
const integrity = Object.entries(hashes).map(([k, v]) => `${k}-${v}`).join(" ");
|
|
@@ -664,12 +684,15 @@ var preformat4 = (idx) => {
|
|
|
664
684
|
delete lf[alias.key];
|
|
665
685
|
}
|
|
666
686
|
const key = keys.join(", ");
|
|
687
|
+
const _dependencies = mergeDeps(dependencies, devDependencies);
|
|
688
|
+
if (_dependencies)
|
|
689
|
+
sortObject(_dependencies);
|
|
667
690
|
rangemap[resolved] = { keys, key, name };
|
|
668
691
|
lf[key] = {
|
|
669
692
|
version: version6,
|
|
670
693
|
resolved,
|
|
671
694
|
integrity,
|
|
672
|
-
dependencies,
|
|
695
|
+
dependencies: _dependencies,
|
|
673
696
|
optionalDependencies
|
|
674
697
|
};
|
|
675
698
|
});
|
|
@@ -731,8 +754,12 @@ var version5 = "yarn-berry";
|
|
|
731
754
|
var check5 = (value) => value.includes(`
|
|
732
755
|
__metadata:
|
|
733
756
|
version:`);
|
|
734
|
-
var parse4 = (lockfile,
|
|
735
|
-
const manifest = JSON.parse(
|
|
757
|
+
var parse4 = (lockfile, ...pkgs) => {
|
|
758
|
+
const manifest = JSON.parse(pkgs[0]);
|
|
759
|
+
const manifests = Object.fromEntries(pkgs.map((p) => {
|
|
760
|
+
const manifest2 = JSON.parse(p);
|
|
761
|
+
return [manifest2.name, manifest2];
|
|
762
|
+
}));
|
|
736
763
|
const snapshot = {};
|
|
737
764
|
const raw = load2(lockfile);
|
|
738
765
|
delete raw.__metadata;
|
|
@@ -741,6 +768,9 @@ var parse4 = (lockfile, pkg) => {
|
|
|
741
768
|
const { version: version6, checksum, dependencies, dependenciesMeta, optionalDependencies, peerDependencies, peerDependenciesMeta, resolution, bin, conditions } = _entry;
|
|
742
769
|
const chunks = _key.split(", ");
|
|
743
770
|
const names = unique(chunks.map((c) => c.slice(0, c.indexOf("@", 1))));
|
|
771
|
+
const isLocal = version6 === "0.0.0-use.local";
|
|
772
|
+
const hashes = parseIntegrity(checksum);
|
|
773
|
+
const source = parseResolution4(resolution);
|
|
744
774
|
for (const name of names) {
|
|
745
775
|
const key = `${name}@${version6}`;
|
|
746
776
|
if (_key.includes("#")) {
|
|
@@ -752,15 +782,16 @@ var parse4 = (lockfile, pkg) => {
|
|
|
752
782
|
return;
|
|
753
783
|
}
|
|
754
784
|
const ranges = chunks.filter((c) => c.startsWith(`${name}@`)).map((r) => r.slice(r.indexOf("@", 1) + 1)).map(normalizeReference);
|
|
755
|
-
const
|
|
756
|
-
const
|
|
785
|
+
const _dependencies = normalizeDeps(isLocal && manifests[name]?.dependencies || dependencies);
|
|
786
|
+
const _devDependencies = normalizeDeps(isLocal && manifests[name]?.devDependencies);
|
|
757
787
|
snapshot[key] = {
|
|
758
788
|
name,
|
|
759
789
|
version: version6,
|
|
760
790
|
ranges,
|
|
761
791
|
hashes,
|
|
762
792
|
source,
|
|
763
|
-
dependencies:
|
|
793
|
+
dependencies: _dependencies,
|
|
794
|
+
devDependencies: _devDependencies,
|
|
764
795
|
dependenciesMeta,
|
|
765
796
|
optionalDependencies: normalizeDeps(optionalDependencies),
|
|
766
797
|
peerDependencies: normalizeDeps(peerDependencies),
|
|
@@ -789,12 +820,13 @@ var parse4 = (lockfile, pkg) => {
|
|
|
789
820
|
debug.json("yarn-berry-snapshot.json", snapshot);
|
|
790
821
|
return snapshot;
|
|
791
822
|
};
|
|
792
|
-
var preformat5 = (idx) => {
|
|
823
|
+
var preformat5 = (idx, { __metadata } = {}) => {
|
|
793
824
|
const { snapshot } = idx;
|
|
794
825
|
const lf = {};
|
|
795
826
|
const rangemap = {};
|
|
827
|
+
const isYarn4 = __metadata?.version >= 7;
|
|
796
828
|
Object.values(snapshot).forEach((entry) => {
|
|
797
|
-
const { name, version: version6, ranges, hashes: { checksum }, dependencies, dependenciesMeta, optionalDependencies, peerDependencies, peerDependenciesMeta, source, patch, bin, conditions } = entry;
|
|
829
|
+
const { name, version: version6, ranges, hashes: { checksum }, devDependencies, dependencies, dependenciesMeta, optionalDependencies, peerDependencies, peerDependenciesMeta, source, patch, bin, conditions } = entry;
|
|
798
830
|
const resolution = formatResolution4(source);
|
|
799
831
|
const alias = rangemap[resolution];
|
|
800
832
|
const isLocal = version6 === "0.0.0-use.local";
|
|
@@ -807,11 +839,14 @@ var preformat5 = (idx) => {
|
|
|
807
839
|
delete lf[alias.key];
|
|
808
840
|
}
|
|
809
841
|
const key = keys.join(", ");
|
|
842
|
+
const _dependencies = mergeDeps(dependencies, devDependencies);
|
|
843
|
+
if (_dependencies)
|
|
844
|
+
sortObject(_dependencies);
|
|
810
845
|
rangemap[resolution] = { keys, key, name };
|
|
811
846
|
lf[key] = {
|
|
812
847
|
version: version6,
|
|
813
848
|
resolution,
|
|
814
|
-
dependencies: formatDeps(
|
|
849
|
+
dependencies: formatDeps(_dependencies, { semverAsNpm: isYarn4, isLocal: !isLocal }),
|
|
815
850
|
optionalDependencies: formatDeps(optionalDependencies),
|
|
816
851
|
peerDependencies: formatDeps(peerDependencies),
|
|
817
852
|
dependenciesMeta,
|
|
@@ -839,7 +874,7 @@ var format5 = (snapshot, { __metadata = {
|
|
|
839
874
|
} } = {}) => {
|
|
840
875
|
const lines = dump2({
|
|
841
876
|
__metadata,
|
|
842
|
-
...preformat5({ snapshot })
|
|
877
|
+
...preformat5({ snapshot }, { __metadata })
|
|
843
878
|
}, {
|
|
844
879
|
quotingType: '"',
|
|
845
880
|
flowLevel: -1,
|