@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 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 (with `type` / `url` /
64
- * `directory` and any extensions preserved). Not meant to be referenced
65
- * directly.
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
- repository: Schema.optionalKey(RepositoryField),
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
- return typeof wire === "string" && isFaithful(wire, person) ? wire : person;
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 (with `type` / `url` /
345
- * `directory` and any extensions preserved). Not meant to be referenced
346
- * directly.
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 repository: Schema.optionalKey<Schema.Union<readonly [Schema.String, Schema.$Record<Schema.String, Schema.Unknown>]>>;
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.5.1",
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.3.1",
41
+ "@effected/npm": "~0.5.0",
42
42
  "@effected/semver": "~0.2.1",
43
43
  "@effected/spdx": "~0.1.1"
44
44
  },