@vltpkg/package-json 0.0.0-9 → 1.0.0-rc.10
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/dist/esm/index.d.ts +18 -5
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +48 -5
- package/dist/esm/index.js.map +1 -1
- package/package.json +15 -13
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { NormalizedManifest } from '@vltpkg/types';
|
|
2
2
|
export declare class PackageJson {
|
|
3
3
|
#private;
|
|
4
4
|
/**
|
|
@@ -7,9 +7,22 @@ export declare class PackageJson {
|
|
|
7
7
|
*/
|
|
8
8
|
read(dir: string, { reload }?: {
|
|
9
9
|
reload?: boolean;
|
|
10
|
-
}):
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
}): NormalizedManifest;
|
|
11
|
+
/**
|
|
12
|
+
* Optionally reads and parses contents of a `package.json` file at a
|
|
13
|
+
* directory `dir`. Returns `undefined` if it could not be read.
|
|
14
|
+
*/
|
|
15
|
+
maybeRead(dir: string, { reload }?: {
|
|
16
|
+
reload?: boolean;
|
|
17
|
+
}): NormalizedManifest | undefined;
|
|
18
|
+
write(dir: string, manifest: NormalizedManifest, indent?: number): void;
|
|
19
|
+
save(manifest: NormalizedManifest): void;
|
|
20
|
+
fix(manifest: NormalizedManifest): void;
|
|
21
|
+
/**
|
|
22
|
+
* Walks up the directory tree from the current working directory
|
|
23
|
+
* and returns the path to the first `package.json` file found.
|
|
24
|
+
* Returns undefined if no package.json is found.
|
|
25
|
+
*/
|
|
26
|
+
find(cwd?: string, home?: string): string | undefined;
|
|
14
27
|
}
|
|
15
28
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAgBvD,qBAAa,WAAW;;IAgBtB;;;OAGG;IACH,IAAI,CACF,GAAG,EAAE,MAAM,EACX,EAAE,MAAM,EAAE,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO,GACpC,kBAAkB;IAsCrB;;;OAGG;IACH,SAAS,CACP,GAAG,EAAE,MAAM,EACX,EAAE,MAAM,EAAE,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO,GACpC,kBAAkB,GAAG,SAAS;IAQjC,KAAK,CACH,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,CAAC,EAAE,MAAM,GACd,IAAI;IA6BP,IAAI,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAcxC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAcvC;;;;OAIG;IACH,IAAI,CACF,GAAG,GAAE,MAAsB,EAC3B,IAAI,GAAE,MAAkB,GACvB,MAAM,GAAG,SAAS;CAWtB"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
import { error } from '@vltpkg/error-cause';
|
|
2
|
-
import { asManifest, longDependencyTypes } from '@vltpkg/types';
|
|
3
|
-
import { readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { asManifest, longDependencyTypes, normalizeManifest, } from '@vltpkg/types';
|
|
3
|
+
import { readFileSync, writeFileSync, lstatSync } from 'node:fs';
|
|
4
4
|
import { resolve } from 'node:path';
|
|
5
|
+
import { homedir } from 'node:os';
|
|
5
6
|
import { parse, stringify } from 'polite-json';
|
|
7
|
+
import { walkUp } from 'walk-up-path';
|
|
8
|
+
const exists = (path) => {
|
|
9
|
+
try {
|
|
10
|
+
lstatSync(path);
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
6
17
|
export class PackageJson {
|
|
7
18
|
/**
|
|
8
19
|
* cache of `package.json` loads
|
|
@@ -25,14 +36,16 @@ export class PackageJson {
|
|
|
25
36
|
if (cachedPackageJson) {
|
|
26
37
|
return cachedPackageJson;
|
|
27
38
|
}
|
|
28
|
-
const filename =
|
|
39
|
+
const filename = dir.endsWith('package.json') ?
|
|
40
|
+
resolve(dir)
|
|
41
|
+
: resolve(dir, 'package.json');
|
|
29
42
|
const fail = (err) => error('Could not read package.json file', err, this.read);
|
|
30
43
|
const cachedError = !reload && this.#errCache.get(dir);
|
|
31
44
|
if (cachedError) {
|
|
32
45
|
throw fail(cachedError);
|
|
33
46
|
}
|
|
34
47
|
try {
|
|
35
|
-
const res = asManifest(parse(readFileSync(filename, { encoding: 'utf8' })));
|
|
48
|
+
const res = normalizeManifest(asManifest(parse(readFileSync(filename, { encoding: 'utf8' }))));
|
|
36
49
|
this.#cache.set(dir, res);
|
|
37
50
|
this.#pathCache.set(res, dir);
|
|
38
51
|
return res;
|
|
@@ -46,8 +59,22 @@ export class PackageJson {
|
|
|
46
59
|
throw fail(ec);
|
|
47
60
|
}
|
|
48
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Optionally reads and parses contents of a `package.json` file at a
|
|
64
|
+
* directory `dir`. Returns `undefined` if it could not be read.
|
|
65
|
+
*/
|
|
66
|
+
maybeRead(dir, { reload } = {}) {
|
|
67
|
+
try {
|
|
68
|
+
return this.read(dir, { reload });
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
49
74
|
write(dir, manifest, indent) {
|
|
50
|
-
const filename =
|
|
75
|
+
const filename = dir.endsWith('package.json') ?
|
|
76
|
+
resolve(dir)
|
|
77
|
+
: resolve(dir, 'package.json');
|
|
51
78
|
this.fix(manifest);
|
|
52
79
|
try {
|
|
53
80
|
// This assumes kIndent and kNewline are already present on the manifest because we would
|
|
@@ -85,5 +112,21 @@ export class PackageJson {
|
|
|
85
112
|
}
|
|
86
113
|
}
|
|
87
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* Walks up the directory tree from the current working directory
|
|
117
|
+
* and returns the path to the first `package.json` file found.
|
|
118
|
+
* Returns undefined if no package.json is found.
|
|
119
|
+
*/
|
|
120
|
+
find(cwd = process.cwd(), home = homedir()) {
|
|
121
|
+
for (const dir of walkUp(cwd)) {
|
|
122
|
+
// don't look in home directory
|
|
123
|
+
if (dir === home)
|
|
124
|
+
break;
|
|
125
|
+
const packageJsonPath = resolve(dir, 'package.json');
|
|
126
|
+
if (exists(packageJsonPath)) {
|
|
127
|
+
return packageJsonPath;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
88
131
|
}
|
|
89
132
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAE3C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { error } from '@vltpkg/error-cause'\nimport type { ErrorCauseOptions } from '@vltpkg/error-cause'\nimport {\n asManifest,\n longDependencyTypes,\n normalizeManifest,\n} from '@vltpkg/types'\nimport type { NormalizedManifest } from '@vltpkg/types'\nimport { readFileSync, writeFileSync, lstatSync } from 'node:fs'\nimport { resolve } from 'node:path'\nimport { homedir } from 'node:os'\nimport { parse, stringify } from 'polite-json'\nimport { walkUp } from 'walk-up-path'\n\nconst exists = (path: string): boolean => {\n try {\n lstatSync(path)\n return true\n } catch {\n return false\n }\n}\n\nexport class PackageJson {\n /**\n * cache of `package.json` loads\n */\n #cache = new Map<string, NormalizedManifest>()\n\n /**\n * cache of `package.json` paths by manifest\n */\n #pathCache = new Map<NormalizedManifest, string>()\n\n /**\n * cache of load errors\n */\n #errCache = new Map<string, ErrorCauseOptions>()\n\n /**\n * Reads and parses contents of a `package.json` file at a directory `dir`.\n * `reload` will optionally skip reading from the cache when set to `true`.\n */\n read(\n dir: string,\n { reload }: { reload?: boolean } = {},\n ): NormalizedManifest {\n const cachedPackageJson = !reload && this.#cache.get(dir)\n if (cachedPackageJson) {\n return cachedPackageJson\n }\n\n const filename =\n dir.endsWith('package.json') ?\n resolve(dir)\n : resolve(dir, 'package.json')\n\n const fail = (err: ErrorCauseOptions) =>\n error('Could not read package.json file', err, this.read)\n\n const cachedError = !reload && this.#errCache.get(dir)\n if (cachedError) {\n throw fail(cachedError)\n }\n\n try {\n const res = normalizeManifest(\n asManifest(\n parse(readFileSync(filename, { encoding: 'utf8' })),\n ),\n )\n this.#cache.set(dir, res)\n this.#pathCache.set(res, dir)\n return res\n } catch (err) {\n const ec: ErrorCauseOptions = {\n path: filename,\n cause: err,\n }\n this.#errCache.set(dir, ec)\n throw fail(ec)\n }\n }\n\n /**\n * Optionally reads and parses contents of a `package.json` file at a\n * directory `dir`. Returns `undefined` if it could not be read.\n */\n maybeRead(\n dir: string,\n { reload }: { reload?: boolean } = {},\n ): NormalizedManifest | undefined {\n try {\n return this.read(dir, { reload })\n } catch {\n return undefined\n }\n }\n\n write(\n dir: string,\n manifest: NormalizedManifest,\n indent?: number,\n ): void {\n const filename =\n dir.endsWith('package.json') ?\n resolve(dir)\n : resolve(dir, 'package.json')\n this.fix(manifest)\n\n try {\n // This assumes kIndent and kNewline are already present on the manifest because we would\n // only write a package.json after reading it which will set those properties.\n writeFileSync(filename, stringify(manifest, undefined, indent))\n this.#cache.set(dir, manifest)\n this.#pathCache.set(manifest, dir)\n } catch (err) {\n // If there was an error writing to this package.json then also delete it from our cache\n // just in case a future read would get stale data.\n this.#cache.delete(dir)\n this.#pathCache.delete(manifest)\n throw error(\n 'Could not write package.json file',\n {\n path: filename,\n cause: err,\n },\n this.write,\n )\n }\n }\n\n save(manifest: NormalizedManifest): void {\n const dir = this.#pathCache.get(manifest)\n if (!dir) {\n throw error(\n 'Could not save manifest',\n {\n manifest,\n },\n this.save,\n )\n }\n this.write(dir, manifest)\n }\n\n fix(manifest: NormalizedManifest): void {\n for (const depType of longDependencyTypes) {\n const deps = manifest[depType]\n if (deps) {\n // should sort dependencies by name\n manifest[depType] = Object.fromEntries(\n Object.entries(deps).sort(([a], [b]) =>\n a.localeCompare(b, 'en'),\n ),\n )\n }\n }\n }\n\n /**\n * Walks up the directory tree from the current working directory\n * and returns the path to the first `package.json` file found.\n * Returns undefined if no package.json is found.\n */\n find(\n cwd: string = process.cwd(),\n home: string = homedir(),\n ): string | undefined {\n for (const dir of walkUp(cwd)) {\n // don't look in home directory\n if (dir === home) break\n\n const packageJsonPath = resolve(dir, 'package.json')\n if (exists(packageJsonPath)) {\n return packageJsonPath\n }\n }\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vltpkg/package-json",
|
|
3
3
|
"description": "Manage reading package.json files",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "1.0.0-rc.10",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "git+https://github.com/vltpkg/vltpkg.git",
|
|
8
8
|
"directory": "src/package-json"
|
|
9
9
|
},
|
|
10
|
+
"author": "vlt technology inc. <support@vlt.sh> (http://vlt.sh)",
|
|
10
11
|
"tshy": {
|
|
11
12
|
"selfLink": false,
|
|
12
13
|
"liveDev": true,
|
|
@@ -20,24 +21,24 @@
|
|
|
20
21
|
},
|
|
21
22
|
"dependencies": {
|
|
22
23
|
"polite-json": "^5.0.0",
|
|
23
|
-
"
|
|
24
|
-
"@vltpkg/error-cause": "
|
|
24
|
+
"walk-up-path": "^4.0.0",
|
|
25
|
+
"@vltpkg/error-cause": "1.0.0-rc.10",
|
|
26
|
+
"@vltpkg/types": "1.0.0-rc.10"
|
|
25
27
|
},
|
|
26
28
|
"devDependencies": {
|
|
27
|
-
"@eslint/js": "^9.
|
|
28
|
-
"@types/
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"typedoc": "0.27.6",
|
|
29
|
+
"@eslint/js": "^9.39.1",
|
|
30
|
+
"@types/node": "^22.19.2",
|
|
31
|
+
"eslint": "^9.39.1",
|
|
32
|
+
"prettier": "^3.7.4",
|
|
33
|
+
"tap": "^21.5.0",
|
|
34
|
+
"tshy": "^3.1.0",
|
|
35
|
+
"typedoc": "~0.27.9",
|
|
35
36
|
"typescript": "5.7.3",
|
|
36
|
-
"typescript-eslint": "^8.
|
|
37
|
+
"typescript-eslint": "^8.49.0"
|
|
37
38
|
},
|
|
38
39
|
"license": "BSD-2-Clause-Patent",
|
|
39
40
|
"engines": {
|
|
40
|
-
"node": ">=22"
|
|
41
|
+
"node": ">=22.9.0"
|
|
41
42
|
},
|
|
42
43
|
"tap": {
|
|
43
44
|
"extends": "../../tap-config.yaml"
|
|
@@ -65,6 +66,7 @@
|
|
|
65
66
|
"snap": "tap",
|
|
66
67
|
"test": "tap",
|
|
67
68
|
"posttest": "tsc --noEmit",
|
|
69
|
+
"tshy": "tshy",
|
|
68
70
|
"typecheck": "tsc --noEmit"
|
|
69
71
|
}
|
|
70
72
|
}
|