@effected/package-json 0.5.1 → 0.6.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/Package.js +12 -4
- package/Person.js +5 -2
- package/Repository.js +179 -0
- package/index.d.ts +87 -5
- package/index.js +2 -1
- package/package.json +2 -2
package/Package.js
CHANGED
|
@@ -5,6 +5,7 @@ import { renderJson, resolveIndent } from "./internal/format.js";
|
|
|
5
5
|
import { PackageManager } from "./PackageManager.js";
|
|
6
6
|
import { InvalidPackageNameError, PackageName } from "./PackageName.js";
|
|
7
7
|
import { Person } from "./Person.js";
|
|
8
|
+
import { Bugs, Repository } from "./Repository.js";
|
|
8
9
|
import { CatalogResolver, DependencySpecifier, WorkspaceResolver } from "@effected/npm";
|
|
9
10
|
import { Effect, Function, HashMap, Option, Pipeable, Schema, SchemaTransformation } from "effect";
|
|
10
11
|
import { SemVer } from "@effected/semver";
|
|
@@ -60,9 +61,12 @@ const PublishConfigField = Schema.Record(Schema.String, Schema.Unknown);
|
|
|
60
61
|
*/
|
|
61
62
|
const PeerDependenciesMetaField = Schema.Record(Schema.String, Schema.Struct({ optional: Schema.optionalKey(Schema.Boolean) }));
|
|
62
63
|
/**
|
|
63
|
-
* The `repository` field: a shorthand string or an object
|
|
64
|
-
*
|
|
65
|
-
*
|
|
64
|
+
* The `repository` field's raw wire shape: a shorthand string or an object.
|
|
65
|
+
*
|
|
66
|
+
* @deprecated Superseded by {@link Repository.FromValue}, which decodes both
|
|
67
|
+
* encodings into a typed {@link Repository} with normalization getters and
|
|
68
|
+
* round-trips the original form. Kept as a named type for consumers that were
|
|
69
|
+
* matching on the raw union; it is no longer what `Package.repository` uses.
|
|
66
70
|
*
|
|
67
71
|
* @public
|
|
68
72
|
*/
|
|
@@ -141,7 +145,11 @@ var Package = class Package extends Schema.Class("Package")({
|
|
|
141
145
|
license: Schema.optionalKey(SpdxLicense),
|
|
142
146
|
author: Schema.optionalKey(Person.FromValue),
|
|
143
147
|
contributors: Schema.optionalKey(Schema.Array(Person.FromValue)),
|
|
144
|
-
|
|
148
|
+
maintainers: Schema.optionalKey(Schema.Array(Person.FromValue)),
|
|
149
|
+
keywords: Schema.optionalKey(Schema.Array(Schema.String)),
|
|
150
|
+
repository: Schema.optionalKey(Repository.FromValue),
|
|
151
|
+
bugs: Schema.optionalKey(Bugs.FromValue),
|
|
152
|
+
homepage: Schema.optionalKey(Schema.String),
|
|
145
153
|
dependencies: DependencyMapField,
|
|
146
154
|
devDependencies: DependencyMapField,
|
|
147
155
|
peerDependencies: DependencyMapField,
|
package/Person.js
CHANGED
|
@@ -31,10 +31,11 @@ const KNOWN_KEYS = /* @__PURE__ */ new Set([
|
|
|
31
31
|
"url"
|
|
32
32
|
]);
|
|
33
33
|
const sameRest = (a, b) => JSON.stringify(a ?? {}) === JSON.stringify(b ?? {});
|
|
34
|
+
const isShorthandExpressible = (person) => person.rest === void 0 || Object.keys(person.rest).length === 0;
|
|
34
35
|
const isFaithful = (wire, person) => {
|
|
35
36
|
if (typeof wire === "string") {
|
|
36
37
|
const parsed = parsePersonString(wire);
|
|
37
|
-
return parsed.name === person.name && parsed.email === person.email && parsed.url === person.url;
|
|
38
|
+
return parsed.name === person.name && parsed.email === person.email && parsed.url === person.url && isShorthandExpressible(person);
|
|
38
39
|
}
|
|
39
40
|
const rest = restOf(wire);
|
|
40
41
|
return wire.name === person.name && wire.email === person.email && wire.url === person.url && sameRest(rest, person.rest);
|
|
@@ -123,7 +124,9 @@ var Person = class Person extends Schema.Class("Person")({
|
|
|
123
124
|
decode: (input) => typeof input === "string" ? rememberWire(parsePersonString(input), input) : input,
|
|
124
125
|
encode: (person) => {
|
|
125
126
|
const wire = wireForms.get(person);
|
|
126
|
-
|
|
127
|
+
if (typeof wire !== "string") return person;
|
|
128
|
+
if (isFaithful(wire, person)) return wire;
|
|
129
|
+
return isShorthandExpressible(person) ? serializePerson(person) : person;
|
|
127
130
|
}
|
|
128
131
|
})));
|
|
129
132
|
/**
|
package/Repository.js
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { Option, Schema, SchemaTransformation } from "effect";
|
|
2
|
+
|
|
3
|
+
//#region src/Repository.ts
|
|
4
|
+
/** The shorthand hosts npm resolves without a scheme. */
|
|
5
|
+
const SHORTHAND_HOSTS = /* @__PURE__ */ new Map([
|
|
6
|
+
["github", "https://github.com"],
|
|
7
|
+
["gitlab", "https://gitlab.com"],
|
|
8
|
+
["bitbucket", "https://bitbucket.org"]
|
|
9
|
+
]);
|
|
10
|
+
/** `owner/name`, the bare GitHub shorthand. Deliberately strict about segment shape. */
|
|
11
|
+
const BARE_SHORTHAND = /^[\w.-]+\/[\w.-]+$/;
|
|
12
|
+
/** `github:owner/name`, `gist:id`, … */
|
|
13
|
+
const PREFIXED_SHORTHAND = /^([a-z]+):(.+)$/;
|
|
14
|
+
/** The scp-like form git accepts: `git@host:owner/name.git`. */
|
|
15
|
+
const SCP_LIKE = /^(?:([\w.-]+)@)?([\w.-]+):(.+)$/;
|
|
16
|
+
const stripGitSuffix = (value) => value.endsWith(".git") ? value.slice(0, -4) : value;
|
|
17
|
+
/**
|
|
18
|
+
* The browsable `https://host/path` form of a repository reference, or none
|
|
19
|
+
* when the value is not one this model recognizes.
|
|
20
|
+
*
|
|
21
|
+
* Total by construction: `repository` is caller data, and a value we cannot
|
|
22
|
+
* interpret is a missing answer rather than a failure.
|
|
23
|
+
*/
|
|
24
|
+
const browseUrlOf = (raw) => {
|
|
25
|
+
const url = raw.trim();
|
|
26
|
+
if (url === "") return Option.none();
|
|
27
|
+
if (BARE_SHORTHAND.test(url)) return Option.some(`https://github.com/${url}`);
|
|
28
|
+
const prefixed = PREFIXED_SHORTHAND.exec(url);
|
|
29
|
+
if (prefixed !== null) {
|
|
30
|
+
const [, scheme, rest] = prefixed;
|
|
31
|
+
if (scheme === "gist") return Option.some(`https://gist.github.com/${stripGitSuffix(rest ?? "")}`);
|
|
32
|
+
const host = SHORTHAND_HOSTS.get(scheme ?? "");
|
|
33
|
+
if (host !== void 0) return Option.some(`${host}/${stripGitSuffix(rest ?? "")}`);
|
|
34
|
+
}
|
|
35
|
+
const withoutGitPlus = url.startsWith("git+") ? url.slice(4) : url;
|
|
36
|
+
const schemeMatch = /^([a-z][a-z0-9+.-]*):\/\/(.*)$/i.exec(withoutGitPlus);
|
|
37
|
+
if (schemeMatch !== null) {
|
|
38
|
+
const withoutCredentials = (schemeMatch[2] ?? "").replace(/^[^/@]+@/, "");
|
|
39
|
+
return withoutCredentials === "" ? Option.none() : Option.some(`https://${stripGitSuffix(withoutCredentials)}`);
|
|
40
|
+
}
|
|
41
|
+
const scp = SCP_LIKE.exec(withoutGitPlus);
|
|
42
|
+
if (scp !== null) {
|
|
43
|
+
const [, , host, path] = scp;
|
|
44
|
+
if (host !== void 0 && path !== void 0 && path !== "") return Option.some(`https://${host}/${stripGitSuffix(path)}`);
|
|
45
|
+
}
|
|
46
|
+
return Option.none();
|
|
47
|
+
};
|
|
48
|
+
const repositoryWires = /* @__PURE__ */ new WeakMap();
|
|
49
|
+
const bugsWires = /* @__PURE__ */ new WeakMap();
|
|
50
|
+
const KNOWN_REPOSITORY_KEYS = /* @__PURE__ */ new Set([
|
|
51
|
+
"type",
|
|
52
|
+
"url",
|
|
53
|
+
"directory"
|
|
54
|
+
]);
|
|
55
|
+
const KNOWN_BUGS_KEYS = /* @__PURE__ */ new Set(["url", "email"]);
|
|
56
|
+
/**
|
|
57
|
+
* Where a package's source lives.
|
|
58
|
+
*
|
|
59
|
+
* @remarks
|
|
60
|
+
* `url` is **verbatim** — exactly the string the manifest carried, shorthand
|
|
61
|
+
* and all. Normalization is offered through {@link Repository.browseUrl} and
|
|
62
|
+
* {@link Repository.gitUrl}, so reading a manifest never rewrites it and a
|
|
63
|
+
* caller that wants the original still has it.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```ts
|
|
67
|
+
* // "effected/kit" → https://github.com/effected/kit
|
|
68
|
+
* // "git@github.com:effected/kit.git" → https://github.com/effected/kit
|
|
69
|
+
* ```
|
|
70
|
+
*
|
|
71
|
+
* @public
|
|
72
|
+
*/
|
|
73
|
+
var Repository = class Repository extends Schema.Class("Repository")({
|
|
74
|
+
/** The `type` field, when the object form carried one (`"git"`, …). */
|
|
75
|
+
type: Schema.optionalKey(Schema.String),
|
|
76
|
+
/** The reference exactly as written: a shorthand, a git URL, or an https URL. */
|
|
77
|
+
url: Schema.String,
|
|
78
|
+
/** The subdirectory within the repository, for a monorepo member. */
|
|
79
|
+
directory: Schema.optionalKey(Schema.String),
|
|
80
|
+
/** Keys outside the documented set, preserved so encoding does not drop them. */
|
|
81
|
+
rest: Schema.optionalKey(Schema.Record(Schema.String, Schema.Unknown))
|
|
82
|
+
}) {
|
|
83
|
+
/**
|
|
84
|
+
* The browsable `https://` URL, or `Option.none()` when `url` is not a form
|
|
85
|
+
* this model recognizes.
|
|
86
|
+
*/
|
|
87
|
+
get browseUrl() {
|
|
88
|
+
return browseUrlOf(this.url);
|
|
89
|
+
}
|
|
90
|
+
/** The canonical https clone URL, or none when it cannot be derived. */
|
|
91
|
+
get gitUrl() {
|
|
92
|
+
return Option.map(this.browseUrl, (url) => `${url}.git`);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* The `repository` field: the shorthand string or the object form, always
|
|
96
|
+
* decoded to a {@link Repository}, and always re-encoded in the form it was
|
|
97
|
+
* read from.
|
|
98
|
+
*/
|
|
99
|
+
static FromValue = Schema.Union([Schema.Record(Schema.String, Schema.Unknown), Schema.String]).pipe(Schema.decodeTo(Schema.instanceOf(Repository), SchemaTransformation.transform({
|
|
100
|
+
decode: (input) => {
|
|
101
|
+
if (typeof input === "string") {
|
|
102
|
+
const repository = Repository.make({ url: input });
|
|
103
|
+
repositoryWires.set(repository, input);
|
|
104
|
+
return repository;
|
|
105
|
+
}
|
|
106
|
+
const rest = {};
|
|
107
|
+
for (const [key, value] of Object.entries(input)) if (!KNOWN_REPOSITORY_KEYS.has(key)) rest[key] = value;
|
|
108
|
+
const repository = Repository.make({
|
|
109
|
+
url: typeof input.url === "string" ? input.url : "",
|
|
110
|
+
...typeof input.type === "string" && { type: input.type },
|
|
111
|
+
...typeof input.directory === "string" && { directory: input.directory },
|
|
112
|
+
...Object.keys(rest).length > 0 && { rest }
|
|
113
|
+
});
|
|
114
|
+
repositoryWires.set(repository, input);
|
|
115
|
+
return repository;
|
|
116
|
+
},
|
|
117
|
+
encode: (repository) => {
|
|
118
|
+
const wire = repositoryWires.get(repository);
|
|
119
|
+
if (typeof wire === "string" && wire === repository.url) return wire;
|
|
120
|
+
if (wire !== void 0 && typeof wire !== "string") return wire;
|
|
121
|
+
return {
|
|
122
|
+
...repository.type !== void 0 && { type: repository.type },
|
|
123
|
+
url: repository.url,
|
|
124
|
+
...repository.directory !== void 0 && { directory: repository.directory },
|
|
125
|
+
...repository.rest
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
})));
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* Where to report problems with a package.
|
|
132
|
+
*
|
|
133
|
+
* @remarks
|
|
134
|
+
* npm permits a bare URL string, or an object with `url`, `email`, or both —
|
|
135
|
+
* an email-only entry is legal, which is why `url` is optional.
|
|
136
|
+
*
|
|
137
|
+
* @public
|
|
138
|
+
*/
|
|
139
|
+
var Bugs = class Bugs extends Schema.Class("Bugs")({
|
|
140
|
+
/** The issue-tracker URL. */
|
|
141
|
+
url: Schema.optionalKey(Schema.String),
|
|
142
|
+
/** The address to mail instead of, or alongside, filing an issue. */
|
|
143
|
+
email: Schema.optionalKey(Schema.String),
|
|
144
|
+
/** Keys outside the documented set, preserved so encoding does not drop them. */
|
|
145
|
+
rest: Schema.optionalKey(Schema.Record(Schema.String, Schema.Unknown))
|
|
146
|
+
}) {
|
|
147
|
+
/** The `bugs` field: a URL string or the object form. */
|
|
148
|
+
static FromValue = Schema.Union([Schema.Record(Schema.String, Schema.Unknown), Schema.String]).pipe(Schema.decodeTo(Schema.instanceOf(Bugs), SchemaTransformation.transform({
|
|
149
|
+
decode: (input) => {
|
|
150
|
+
if (typeof input === "string") {
|
|
151
|
+
const bugs = Bugs.make({ url: input });
|
|
152
|
+
bugsWires.set(bugs, input);
|
|
153
|
+
return bugs;
|
|
154
|
+
}
|
|
155
|
+
const rest = {};
|
|
156
|
+
for (const [key, value] of Object.entries(input)) if (!KNOWN_BUGS_KEYS.has(key)) rest[key] = value;
|
|
157
|
+
const bugs = Bugs.make({
|
|
158
|
+
...typeof input.url === "string" && { url: input.url },
|
|
159
|
+
...typeof input.email === "string" && { email: input.email },
|
|
160
|
+
...Object.keys(rest).length > 0 && { rest }
|
|
161
|
+
});
|
|
162
|
+
bugsWires.set(bugs, input);
|
|
163
|
+
return bugs;
|
|
164
|
+
},
|
|
165
|
+
encode: (bugs) => {
|
|
166
|
+
const wire = bugsWires.get(bugs);
|
|
167
|
+
if (typeof wire === "string" && wire === bugs.url && bugs.email === void 0) return wire;
|
|
168
|
+
if (wire !== void 0 && typeof wire !== "string") return wire;
|
|
169
|
+
return {
|
|
170
|
+
...bugs.url !== void 0 && { url: bugs.url },
|
|
171
|
+
...bugs.email !== void 0 && { email: bugs.email },
|
|
172
|
+
...bugs.rest
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
})));
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
//#endregion
|
|
179
|
+
export { Bugs, Repository };
|
package/index.d.ts
CHANGED
|
@@ -292,6 +292,75 @@ declare class Person extends Person_base {
|
|
|
292
292
|
static wireStringOf(person: Person): Option.Option<string>;
|
|
293
293
|
}
|
|
294
294
|
//#endregion
|
|
295
|
+
//#region src/Repository.d.ts
|
|
296
|
+
declare const Repository_base: Schema.Class<Repository, Schema.Struct<{
|
|
297
|
+
/** The `type` field, when the object form carried one (`"git"`, …). */
|
|
298
|
+
readonly type: Schema.optionalKey<Schema.String>;
|
|
299
|
+
/** The reference exactly as written: a shorthand, a git URL, or an https URL. */
|
|
300
|
+
readonly url: Schema.String;
|
|
301
|
+
/** The subdirectory within the repository, for a monorepo member. */
|
|
302
|
+
readonly directory: Schema.optionalKey<Schema.String>;
|
|
303
|
+
/** Keys outside the documented set, preserved so encoding does not drop them. */
|
|
304
|
+
readonly rest: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
|
|
305
|
+
}>, {}>;
|
|
306
|
+
/**
|
|
307
|
+
* Where a package's source lives.
|
|
308
|
+
*
|
|
309
|
+
* @remarks
|
|
310
|
+
* `url` is **verbatim** — exactly the string the manifest carried, shorthand
|
|
311
|
+
* and all. Normalization is offered through {@link Repository.browseUrl} and
|
|
312
|
+
* {@link Repository.gitUrl}, so reading a manifest never rewrites it and a
|
|
313
|
+
* caller that wants the original still has it.
|
|
314
|
+
*
|
|
315
|
+
* @example
|
|
316
|
+
* ```ts
|
|
317
|
+
* // "effected/kit" → https://github.com/effected/kit
|
|
318
|
+
* // "git@github.com:effected/kit.git" → https://github.com/effected/kit
|
|
319
|
+
* ```
|
|
320
|
+
*
|
|
321
|
+
* @public
|
|
322
|
+
*/
|
|
323
|
+
declare class Repository extends Repository_base {
|
|
324
|
+
/**
|
|
325
|
+
* The browsable `https://` URL, or `Option.none()` when `url` is not a form
|
|
326
|
+
* this model recognizes.
|
|
327
|
+
*/
|
|
328
|
+
get browseUrl(): Option.Option<string>;
|
|
329
|
+
/** The canonical https clone URL, or none when it cannot be derived. */
|
|
330
|
+
get gitUrl(): Option.Option<string>;
|
|
331
|
+
/**
|
|
332
|
+
* The `repository` field: the shorthand string or the object form, always
|
|
333
|
+
* decoded to a {@link Repository}, and always re-encoded in the form it was
|
|
334
|
+
* read from.
|
|
335
|
+
*/
|
|
336
|
+
static readonly FromValue: Schema.Codec<Repository, string | {
|
|
337
|
+
readonly [k: string]: unknown;
|
|
338
|
+
}>;
|
|
339
|
+
}
|
|
340
|
+
declare const Bugs_base: Schema.Class<Bugs, Schema.Struct<{
|
|
341
|
+
/** The issue-tracker URL. */
|
|
342
|
+
readonly url: Schema.optionalKey<Schema.String>;
|
|
343
|
+
/** The address to mail instead of, or alongside, filing an issue. */
|
|
344
|
+
readonly email: Schema.optionalKey<Schema.String>;
|
|
345
|
+
/** Keys outside the documented set, preserved so encoding does not drop them. */
|
|
346
|
+
readonly rest: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
|
|
347
|
+
}>, {}>;
|
|
348
|
+
/**
|
|
349
|
+
* Where to report problems with a package.
|
|
350
|
+
*
|
|
351
|
+
* @remarks
|
|
352
|
+
* npm permits a bare URL string, or an object with `url`, `email`, or both —
|
|
353
|
+
* an email-only entry is legal, which is why `url` is optional.
|
|
354
|
+
*
|
|
355
|
+
* @public
|
|
356
|
+
*/
|
|
357
|
+
declare class Bugs extends Bugs_base {
|
|
358
|
+
/** The `bugs` field: a URL string or the object form. */
|
|
359
|
+
static readonly FromValue: Schema.Codec<Bugs, string | {
|
|
360
|
+
readonly [k: string]: unknown;
|
|
361
|
+
}>;
|
|
362
|
+
}
|
|
363
|
+
//#endregion
|
|
295
364
|
//#region src/Package.d.ts
|
|
296
365
|
/**
|
|
297
366
|
* A string→string map field decoding a plain JSON object to a `HashMap`,
|
|
@@ -341,9 +410,12 @@ declare const PeerDependenciesMetaField: Schema.$Record<Schema.String, Schema.St
|
|
|
341
410
|
readonly optional: Schema.optionalKey<Schema.Boolean>;
|
|
342
411
|
}>>;
|
|
343
412
|
/**
|
|
344
|
-
* The `repository` field: a shorthand string or an object
|
|
345
|
-
*
|
|
346
|
-
*
|
|
413
|
+
* The `repository` field's raw wire shape: a shorthand string or an object.
|
|
414
|
+
*
|
|
415
|
+
* @deprecated Superseded by {@link Repository.FromValue}, which decodes both
|
|
416
|
+
* encodings into a typed {@link Repository} with normalization getters and
|
|
417
|
+
* round-trips the original form. Kept as a named type for consumers that were
|
|
418
|
+
* matching on the raw union; it is no longer what `Package.repository` uses.
|
|
347
419
|
*
|
|
348
420
|
* @public
|
|
349
421
|
*/
|
|
@@ -422,7 +494,17 @@ declare const Package_base: Schema.Class<Package, Schema.Struct<{
|
|
|
422
494
|
readonly contributors: Schema.optionalKey<Schema.$Array<Schema.Codec<Person, string | {
|
|
423
495
|
readonly [k: string]: unknown;
|
|
424
496
|
}, never, never>>>;
|
|
425
|
-
readonly
|
|
497
|
+
readonly maintainers: Schema.optionalKey<Schema.$Array<Schema.Codec<Person, string | {
|
|
498
|
+
readonly [k: string]: unknown;
|
|
499
|
+
}, never, never>>>;
|
|
500
|
+
readonly keywords: Schema.optionalKey<Schema.$Array<Schema.String>>;
|
|
501
|
+
readonly repository: Schema.optionalKey<Schema.Codec<Repository, string | {
|
|
502
|
+
readonly [k: string]: unknown;
|
|
503
|
+
}, never, never>>;
|
|
504
|
+
readonly bugs: Schema.optionalKey<Schema.Codec<Bugs, string | {
|
|
505
|
+
readonly [k: string]: unknown;
|
|
506
|
+
}, never, never>>;
|
|
507
|
+
readonly homepage: Schema.optionalKey<Schema.String>;
|
|
426
508
|
readonly dependencies: Schema.decodeTo<Schema.HashMap<Schema.String, Schema.String>, Schema.withDecodingDefaultKey<Schema.$Record<Schema.String, Schema.String>, never>, never, never>;
|
|
427
509
|
readonly devDependencies: Schema.decodeTo<Schema.HashMap<Schema.String, Schema.String>, Schema.withDecodingDefaultKey<Schema.$Record<Schema.String, Schema.String>, never>, never, never>;
|
|
428
510
|
readonly peerDependencies: Schema.decodeTo<Schema.HashMap<Schema.String, Schema.String>, Schema.withDecodingDefaultKey<Schema.$Record<Schema.String, Schema.String>, never>, never, never>;
|
|
@@ -960,5 +1042,5 @@ declare class PackageValidator extends PackageValidator_base {
|
|
|
960
1042
|
}): Layer.Layer<PackageValidator>;
|
|
961
1043
|
}
|
|
962
1044
|
//#endregion
|
|
963
|
-
export { BinField, Dependency, type DependencyKind, DependencyMapField, type DependencyProtocol, DependencySpecifier, type DependencySpecifierBrand, DevEngine, DevEngineOrArray, type DevEngines, DevEnginesSchema, ExportsField, InvalidDependencySpecifierError, InvalidPackageNameError, InvalidSpdxLicenseError, Package, PackageDecodeError, type PackageFormatOptions, type PackageFormatTextOptions, type PackageIndent, PackageJsonFile, type PackageJsonFileShape, PackageJsonFormat, PackageJsonNotFoundError, PackageJsonParseError, PackageJsonReadError, PackageJsonSyntaxError, PackageJsonWriteError, PackageManager, PackageName, type PackagePatch, PackageValidationError, PackageValidator, PeerDependenciesMetaField, Person, PublishConfigField, RepositoryField, type RuleFailure, ScopedPackageName, SpdxLicense, StringMapField, type UnresolvedDependency, UnscopedPackageName, type ValidationRule, defaultRules, isUnresolvedDependency, isValidDependencySpecifier, isValidSpdx, noLocalDepsRule, noUnresolvedDepsRule };
|
|
1045
|
+
export { BinField, Bugs, Dependency, type DependencyKind, DependencyMapField, type DependencyProtocol, DependencySpecifier, type DependencySpecifierBrand, DevEngine, DevEngineOrArray, type DevEngines, DevEnginesSchema, ExportsField, InvalidDependencySpecifierError, InvalidPackageNameError, InvalidSpdxLicenseError, Package, PackageDecodeError, type PackageFormatOptions, type PackageFormatTextOptions, type PackageIndent, PackageJsonFile, type PackageJsonFileShape, PackageJsonFormat, PackageJsonNotFoundError, PackageJsonParseError, PackageJsonReadError, PackageJsonSyntaxError, PackageJsonWriteError, PackageManager, PackageName, type PackagePatch, PackageValidationError, PackageValidator, PeerDependenciesMetaField, Person, PublishConfigField, Repository, RepositoryField, type RuleFailure, ScopedPackageName, SpdxLicense, StringMapField, type UnresolvedDependency, UnscopedPackageName, type ValidationRule, defaultRules, isUnresolvedDependency, isValidDependencySpecifier, isValidSpdx, noLocalDepsRule, noUnresolvedDepsRule };
|
|
964
1046
|
//# sourceMappingURL=index.d.ts.map
|
package/index.js
CHANGED
|
@@ -4,10 +4,11 @@ import { InvalidSpdxLicenseError, SpdxLicense, isValidSpdx } from "./License.js"
|
|
|
4
4
|
import { PackageManager } from "./PackageManager.js";
|
|
5
5
|
import { InvalidPackageNameError, PackageName, ScopedPackageName, UnscopedPackageName } from "./PackageName.js";
|
|
6
6
|
import { Person } from "./Person.js";
|
|
7
|
+
import { Bugs, Repository } from "./Repository.js";
|
|
7
8
|
import { BinField, DependencyMapField, ExportsField, Package, PackageDecodeError, PeerDependenciesMetaField, PublishConfigField, RepositoryField, StringMapField } from "./Package.js";
|
|
8
9
|
import { PackageJsonFile, PackageJsonNotFoundError, PackageJsonParseError, PackageJsonReadError, PackageJsonWriteError } from "./PackageJsonFile.js";
|
|
9
10
|
import { PackageJsonFormat, PackageJsonSyntaxError } from "./PackageJsonFormat.js";
|
|
10
11
|
import { PackageValidationError, PackageValidator, defaultRules, noLocalDepsRule, noUnresolvedDepsRule } from "./PackageValidator.js";
|
|
11
12
|
import { DependencySpecifier, InvalidDependencySpecifierError, isValidDependencySpecifier } from "@effected/npm";
|
|
12
13
|
|
|
13
|
-
export { BinField, Dependency, DependencyMapField, DependencySpecifier, DevEngine, DevEngineOrArray, DevEnginesSchema, ExportsField, InvalidDependencySpecifierError, InvalidPackageNameError, InvalidSpdxLicenseError, Package, PackageDecodeError, PackageJsonFile, PackageJsonFormat, PackageJsonNotFoundError, PackageJsonParseError, PackageJsonReadError, PackageJsonSyntaxError, PackageJsonWriteError, PackageManager, PackageName, PackageValidationError, PackageValidator, PeerDependenciesMetaField, Person, PublishConfigField, RepositoryField, ScopedPackageName, SpdxLicense, StringMapField, UnscopedPackageName, defaultRules, isUnresolvedDependency, isValidDependencySpecifier, isValidSpdx, noLocalDepsRule, noUnresolvedDepsRule };
|
|
14
|
+
export { BinField, Bugs, Dependency, DependencyMapField, DependencySpecifier, DevEngine, DevEngineOrArray, DevEnginesSchema, ExportsField, InvalidDependencySpecifierError, InvalidPackageNameError, InvalidSpdxLicenseError, Package, PackageDecodeError, PackageJsonFile, PackageJsonFormat, PackageJsonNotFoundError, PackageJsonParseError, PackageJsonReadError, PackageJsonSyntaxError, PackageJsonWriteError, PackageManager, PackageName, PackageValidationError, PackageValidator, PeerDependenciesMetaField, Person, PublishConfigField, Repository, RepositoryField, ScopedPackageName, SpdxLicense, StringMapField, UnscopedPackageName, defaultRules, isUnresolvedDependency, isValidDependencySpecifier, isValidSpdx, noLocalDepsRule, noUnresolvedDepsRule };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effected/package-json",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "package.json parsing, editing, validation and file IO as Effect schemas.",
|
|
6
6
|
"keywords": [
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"./package.json": "./package.json"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@effected/npm": "~0.
|
|
41
|
+
"@effected/npm": "~0.5.0",
|
|
42
42
|
"@effected/semver": "~0.2.1",
|
|
43
43
|
"@effected/spdx": "~0.1.1"
|
|
44
44
|
},
|