@code-pushup/coverage-plugin 0.19.0 → 0.20.1

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.
Files changed (3) hide show
  1. package/bin.js +57 -69
  2. package/index.js +58 -70
  3. package/package.json +43 -3
package/bin.js CHANGED
@@ -80,25 +80,15 @@ function executionMetaSchema(options = {
80
80
  duration: z.number({ description: options.descriptionDuration })
81
81
  });
82
82
  }
83
- function slugSchema(description = "Unique ID (human-readable, URL-safe)") {
84
- return z.string({ description }).regex(slugRegex, {
85
- message: "The slug has to follow the pattern [0-9a-z] followed by multiple optional groups of -[0-9a-z]. e.g. my-slug"
86
- }).max(MAX_SLUG_LENGTH, {
87
- message: `slug can be max ${MAX_SLUG_LENGTH} characters long`
88
- });
89
- }
90
- function descriptionSchema(description = "Description (markdown)") {
91
- return z.string({ description }).max(MAX_DESCRIPTION_LENGTH).optional();
92
- }
93
- function docsUrlSchema(description = "Documentation site") {
94
- return urlSchema(description).optional().or(z.string().max(0));
95
- }
96
- function urlSchema(description) {
97
- return z.string({ description }).url();
98
- }
99
- function titleSchema(description = "Descriptive name") {
100
- return z.string({ description }).max(MAX_TITLE_LENGTH);
101
- }
83
+ var slugSchema = z.string({ description: "Unique ID (human-readable, URL-safe)" }).regex(slugRegex, {
84
+ message: "The slug has to follow the pattern [0-9a-z] followed by multiple optional groups of -[0-9a-z]. e.g. my-slug"
85
+ }).max(MAX_SLUG_LENGTH, {
86
+ message: `slug can be max ${MAX_SLUG_LENGTH} characters long`
87
+ });
88
+ var descriptionSchema = z.string({ description: "Description (markdown)" }).max(MAX_DESCRIPTION_LENGTH).optional();
89
+ var urlSchema = z.string().url();
90
+ var docsUrlSchema = urlSchema.optional().or(z.literal("")).describe("Documentation site");
91
+ var titleSchema = z.string({ description: "Descriptive name" }).max(MAX_TITLE_LENGTH);
102
92
  function metaSchema(options) {
103
93
  const {
104
94
  descriptionDescription,
@@ -108,24 +98,19 @@ function metaSchema(options) {
108
98
  } = options ?? {};
109
99
  return z.object(
110
100
  {
111
- title: titleSchema(titleDescription),
112
- description: descriptionSchema(descriptionDescription),
113
- docsUrl: docsUrlSchema(docsUrlDescription)
101
+ title: titleDescription ? titleSchema.describe(titleDescription) : titleSchema,
102
+ description: descriptionDescription ? descriptionSchema.describe(descriptionDescription) : descriptionSchema,
103
+ docsUrl: docsUrlDescription ? docsUrlSchema.describe(docsUrlDescription) : docsUrlSchema
114
104
  },
115
105
  { description }
116
106
  );
117
107
  }
118
- function filePathSchema(description) {
119
- return z.string({ description }).trim().min(1, { message: "path is invalid" });
120
- }
121
- function fileNameSchema(description) {
122
- return z.string({ description }).trim().regex(filenameRegex, {
123
- message: `The filename has to be valid`
124
- }).min(1, { message: "file name is invalid" });
125
- }
126
- function positiveIntSchema(description) {
127
- return z.number({ description }).int().nonnegative();
128
- }
108
+ var filePathSchema = z.string().trim().min(1, { message: "path is invalid" });
109
+ var fileNameSchema = z.string().trim().regex(filenameRegex, {
110
+ message: `The filename has to be valid`
111
+ }).min(1, { message: "file name is invalid" });
112
+ var positiveIntSchema = z.number().int().positive();
113
+ var nonnegativeIntSchema = z.number().int().nonnegative();
129
114
  function packageVersionSchema(options) {
130
115
  const { versionDescription = "NPM version of the package", required } = options ?? {};
131
116
  const packageSchema = z.string({ description: "NPM package name" });
@@ -138,14 +123,14 @@ function packageVersionSchema(options) {
138
123
  { description: "NPM package name and version of a published package" }
139
124
  );
140
125
  }
141
- function weightSchema(description = "Coefficient for the given score (use weight 0 if only for display)") {
142
- return positiveIntSchema(description);
143
- }
126
+ var weightSchema = nonnegativeIntSchema.describe(
127
+ "Coefficient for the given score (use weight 0 if only for display)"
128
+ );
144
129
  function weightedRefSchema(description, slugDescription) {
145
130
  return z.object(
146
131
  {
147
- slug: slugSchema(slugDescription),
148
- weight: weightSchema("Weight used to calculate score")
132
+ slug: slugSchema.describe(slugDescription),
133
+ weight: weightSchema.describe("Weight used to calculate score")
149
134
  },
150
135
  { description }
151
136
  );
@@ -153,14 +138,14 @@ function weightedRefSchema(description, slugDescription) {
153
138
  function scorableSchema(description, refSchema, duplicateCheckFn, duplicateMessageFn) {
154
139
  return z.object(
155
140
  {
156
- slug: slugSchema('Human-readable unique ID, e.g. "performance"'),
141
+ slug: slugSchema.describe('Human-readable unique ID, e.g. "performance"'),
157
142
  refs: z.array(refSchema).min(1).refine(
158
143
  (refs) => !duplicateCheckFn(refs),
159
144
  (refs) => ({
160
145
  message: duplicateMessageFn(refs)
161
146
  })
162
- ).refine(hasWeightedRefsInCategories, () => ({
163
- message: `In a category there has to be at least one ref with weight > 0`
147
+ ).refine(hasNonZeroWeightedRef, () => ({
148
+ message: "In a category there has to be at least one ref with weight > 0"
164
149
  }))
165
150
  },
166
151
  { description }
@@ -169,13 +154,13 @@ function scorableSchema(description, refSchema, duplicateCheckFn, duplicateMessa
169
154
  var materialIconSchema = z.enum(MATERIAL_ICONS, {
170
155
  description: "Icon from VSCode Material Icons extension"
171
156
  });
172
- function hasWeightedRefsInCategories(categoryRefs) {
173
- return categoryRefs.reduce((acc, { weight }) => weight + acc, 0) !== 0;
157
+ function hasNonZeroWeightedRef(refs) {
158
+ return refs.reduce((acc, { weight }) => weight + acc, 0) !== 0;
174
159
  }
175
160
 
176
161
  // packages/models/src/lib/audit.ts
177
162
  var auditSchema = z2.object({
178
- slug: slugSchema("ID (unique within plugin)")
163
+ slug: slugSchema.describe("ID (unique within plugin)")
179
164
  }).merge(
180
165
  metaSchema({
181
166
  titleDescription: "Descriptive name",
@@ -202,17 +187,20 @@ function getDuplicateSlugsInAudits(audits) {
202
187
  return hasDuplicateStrings(audits.map(({ slug }) => slug));
203
188
  }
204
189
 
205
- // packages/models/src/lib/audit-issue.ts
190
+ // packages/models/src/lib/audit-output.ts
191
+ import { z as z4 } from "zod";
192
+
193
+ // packages/models/src/lib/issue.ts
206
194
  import { z as z3 } from "zod";
207
195
  var sourceFileLocationSchema = z3.object(
208
196
  {
209
- file: filePathSchema("Relative path to source file in Git repo"),
197
+ file: filePathSchema.describe("Relative path to source file in Git repo"),
210
198
  position: z3.object(
211
199
  {
212
- startLine: positiveIntSchema("Start line"),
213
- startColumn: positiveIntSchema("Start column").optional(),
214
- endLine: positiveIntSchema("End line").optional(),
215
- endColumn: positiveIntSchema("End column").optional()
200
+ startLine: positiveIntSchema.describe("Start line"),
201
+ startColumn: positiveIntSchema.describe("Start column").optional(),
202
+ endLine: positiveIntSchema.describe("End line").optional(),
203
+ endColumn: positiveIntSchema.describe("End column").optional()
216
204
  },
217
205
  { description: "Location in file" }
218
206
  ).optional()
@@ -232,21 +220,21 @@ var issueSchema = z3.object(
232
220
  );
233
221
 
234
222
  // packages/models/src/lib/audit-output.ts
235
- import { z as z4 } from "zod";
223
+ var auditDetailsSchema = z4.object(
224
+ {
225
+ issues: z4.array(issueSchema, { description: "List of findings" })
226
+ },
227
+ { description: "Detailed information" }
228
+ );
236
229
  var auditOutputSchema = z4.object(
237
230
  {
238
- slug: slugSchema("Reference to audit"),
231
+ slug: slugSchema.describe("Reference to audit"),
239
232
  displayValue: z4.string({ description: "Formatted value (e.g. '0.9 s', '2.1 MB')" }).optional(),
240
- value: positiveIntSchema("Raw numeric value"),
233
+ value: nonnegativeIntSchema.describe("Raw numeric value"),
241
234
  score: z4.number({
242
235
  description: "Value between 0 and 1"
243
236
  }).min(0).max(1),
244
- details: z4.object(
245
- {
246
- issues: z4.array(issueSchema, { description: "List of findings" })
247
- },
248
- { description: "Detailed information" }
249
- ).optional()
237
+ details: auditDetailsSchema.optional()
250
238
  },
251
239
  { description: "Audit information" }
252
240
  );
@@ -276,7 +264,7 @@ var categoryRefSchema = weightedRefSchema(
276
264
  type: z5.enum(["audit", "group"], {
277
265
  description: "Discriminant for reference kind, affects where `slug` is looked up"
278
266
  }),
279
- plugin: slugSchema(
267
+ plugin: slugSchema.describe(
280
268
  "Plugin slug (plugin should contain referenced audit or group)"
281
269
  )
282
270
  })
@@ -336,10 +324,8 @@ import { z as z11 } from "zod";
336
324
  import { z as z6 } from "zod";
337
325
  var formatSchema = z6.enum(["json", "md"]);
338
326
  var persistConfigSchema = z6.object({
339
- outputDir: filePathSchema("Artifacts folder").optional(),
340
- filename: fileNameSchema(
341
- "Artifacts file name (without extension)"
342
- ).optional(),
327
+ outputDir: filePathSchema.describe("Artifacts folder").optional(),
328
+ filename: fileNameSchema.describe("Artifacts file name (without extension)").optional(),
343
329
  format: z6.array(formatSchema).optional()
344
330
  });
345
331
 
@@ -400,7 +386,7 @@ var runnerConfigSchema = z8.object(
400
386
  description: "Shell command to execute"
401
387
  }),
402
388
  args: z8.array(z8.string({ description: "Command arguments" })).optional(),
403
- outputFile: filePathSchema("Output path"),
389
+ outputFile: filePathSchema.describe("Output path"),
404
390
  outputTransform: outputTransformSchema.optional()
405
391
  },
406
392
  {
@@ -420,7 +406,7 @@ var pluginMetaSchema = packageVersionSchema().merge(
420
406
  })
421
407
  ).merge(
422
408
  z9.object({
423
- slug: slugSchema("Unique plugin slug within core config"),
409
+ slug: slugSchema.describe("Unique plugin slug within core config"),
424
410
  icon: materialIconSchema
425
411
  })
426
412
  );
@@ -453,12 +439,14 @@ function getMissingRefsFromGroups(pluginCfg) {
453
439
  // packages/models/src/lib/upload-config.ts
454
440
  import { z as z10 } from "zod";
455
441
  var uploadConfigSchema = z10.object({
456
- server: urlSchema("URL of deployed portal API"),
442
+ server: urlSchema.describe("URL of deployed portal API"),
457
443
  apiKey: z10.string({
458
444
  description: "API key with write access to portal (use `process.env` for security)"
459
445
  }),
460
- organization: slugSchema("Organization slug from Code PushUp portal"),
461
- project: slugSchema("Project slug from Code PushUp portal"),
446
+ organization: slugSchema.describe(
447
+ "Organization slug from Code PushUp portal"
448
+ ),
449
+ project: slugSchema.describe("Project slug from Code PushUp portal"),
462
450
  timeout: z10.number({ description: "Request timeout in minutes (default is 5)" }).positive().int().optional()
463
451
  });
464
452
 
package/index.js CHANGED
@@ -79,25 +79,15 @@ function executionMetaSchema(options = {
79
79
  duration: z.number({ description: options.descriptionDuration })
80
80
  });
81
81
  }
82
- function slugSchema(description = "Unique ID (human-readable, URL-safe)") {
83
- return z.string({ description }).regex(slugRegex, {
84
- message: "The slug has to follow the pattern [0-9a-z] followed by multiple optional groups of -[0-9a-z]. e.g. my-slug"
85
- }).max(MAX_SLUG_LENGTH, {
86
- message: `slug can be max ${MAX_SLUG_LENGTH} characters long`
87
- });
88
- }
89
- function descriptionSchema(description = "Description (markdown)") {
90
- return z.string({ description }).max(MAX_DESCRIPTION_LENGTH).optional();
91
- }
92
- function docsUrlSchema(description = "Documentation site") {
93
- return urlSchema(description).optional().or(z.string().max(0));
94
- }
95
- function urlSchema(description) {
96
- return z.string({ description }).url();
97
- }
98
- function titleSchema(description = "Descriptive name") {
99
- return z.string({ description }).max(MAX_TITLE_LENGTH);
100
- }
82
+ var slugSchema = z.string({ description: "Unique ID (human-readable, URL-safe)" }).regex(slugRegex, {
83
+ message: "The slug has to follow the pattern [0-9a-z] followed by multiple optional groups of -[0-9a-z]. e.g. my-slug"
84
+ }).max(MAX_SLUG_LENGTH, {
85
+ message: `slug can be max ${MAX_SLUG_LENGTH} characters long`
86
+ });
87
+ var descriptionSchema = z.string({ description: "Description (markdown)" }).max(MAX_DESCRIPTION_LENGTH).optional();
88
+ var urlSchema = z.string().url();
89
+ var docsUrlSchema = urlSchema.optional().or(z.literal("")).describe("Documentation site");
90
+ var titleSchema = z.string({ description: "Descriptive name" }).max(MAX_TITLE_LENGTH);
101
91
  function metaSchema(options) {
102
92
  const {
103
93
  descriptionDescription,
@@ -107,24 +97,19 @@ function metaSchema(options) {
107
97
  } = options ?? {};
108
98
  return z.object(
109
99
  {
110
- title: titleSchema(titleDescription),
111
- description: descriptionSchema(descriptionDescription),
112
- docsUrl: docsUrlSchema(docsUrlDescription)
100
+ title: titleDescription ? titleSchema.describe(titleDescription) : titleSchema,
101
+ description: descriptionDescription ? descriptionSchema.describe(descriptionDescription) : descriptionSchema,
102
+ docsUrl: docsUrlDescription ? docsUrlSchema.describe(docsUrlDescription) : docsUrlSchema
113
103
  },
114
104
  { description }
115
105
  );
116
106
  }
117
- function filePathSchema(description) {
118
- return z.string({ description }).trim().min(1, { message: "path is invalid" });
119
- }
120
- function fileNameSchema(description) {
121
- return z.string({ description }).trim().regex(filenameRegex, {
122
- message: `The filename has to be valid`
123
- }).min(1, { message: "file name is invalid" });
124
- }
125
- function positiveIntSchema(description) {
126
- return z.number({ description }).int().nonnegative();
127
- }
107
+ var filePathSchema = z.string().trim().min(1, { message: "path is invalid" });
108
+ var fileNameSchema = z.string().trim().regex(filenameRegex, {
109
+ message: `The filename has to be valid`
110
+ }).min(1, { message: "file name is invalid" });
111
+ var positiveIntSchema = z.number().int().positive();
112
+ var nonnegativeIntSchema = z.number().int().nonnegative();
128
113
  function packageVersionSchema(options) {
129
114
  const { versionDescription = "NPM version of the package", required } = options ?? {};
130
115
  const packageSchema = z.string({ description: "NPM package name" });
@@ -137,14 +122,14 @@ function packageVersionSchema(options) {
137
122
  { description: "NPM package name and version of a published package" }
138
123
  );
139
124
  }
140
- function weightSchema(description = "Coefficient for the given score (use weight 0 if only for display)") {
141
- return positiveIntSchema(description);
142
- }
125
+ var weightSchema = nonnegativeIntSchema.describe(
126
+ "Coefficient for the given score (use weight 0 if only for display)"
127
+ );
143
128
  function weightedRefSchema(description, slugDescription) {
144
129
  return z.object(
145
130
  {
146
- slug: slugSchema(slugDescription),
147
- weight: weightSchema("Weight used to calculate score")
131
+ slug: slugSchema.describe(slugDescription),
132
+ weight: weightSchema.describe("Weight used to calculate score")
148
133
  },
149
134
  { description }
150
135
  );
@@ -152,14 +137,14 @@ function weightedRefSchema(description, slugDescription) {
152
137
  function scorableSchema(description, refSchema, duplicateCheckFn, duplicateMessageFn) {
153
138
  return z.object(
154
139
  {
155
- slug: slugSchema('Human-readable unique ID, e.g. "performance"'),
140
+ slug: slugSchema.describe('Human-readable unique ID, e.g. "performance"'),
156
141
  refs: z.array(refSchema).min(1).refine(
157
142
  (refs) => !duplicateCheckFn(refs),
158
143
  (refs) => ({
159
144
  message: duplicateMessageFn(refs)
160
145
  })
161
- ).refine(hasWeightedRefsInCategories, () => ({
162
- message: `In a category there has to be at least one ref with weight > 0`
146
+ ).refine(hasNonZeroWeightedRef, () => ({
147
+ message: "In a category there has to be at least one ref with weight > 0"
163
148
  }))
164
149
  },
165
150
  { description }
@@ -168,13 +153,13 @@ function scorableSchema(description, refSchema, duplicateCheckFn, duplicateMessa
168
153
  var materialIconSchema = z.enum(MATERIAL_ICONS, {
169
154
  description: "Icon from VSCode Material Icons extension"
170
155
  });
171
- function hasWeightedRefsInCategories(categoryRefs) {
172
- return categoryRefs.reduce((acc, { weight }) => weight + acc, 0) !== 0;
156
+ function hasNonZeroWeightedRef(refs) {
157
+ return refs.reduce((acc, { weight }) => weight + acc, 0) !== 0;
173
158
  }
174
159
 
175
160
  // packages/models/src/lib/audit.ts
176
161
  var auditSchema = z2.object({
177
- slug: slugSchema("ID (unique within plugin)")
162
+ slug: slugSchema.describe("ID (unique within plugin)")
178
163
  }).merge(
179
164
  metaSchema({
180
165
  titleDescription: "Descriptive name",
@@ -201,17 +186,20 @@ function getDuplicateSlugsInAudits(audits) {
201
186
  return hasDuplicateStrings(audits.map(({ slug }) => slug));
202
187
  }
203
188
 
204
- // packages/models/src/lib/audit-issue.ts
189
+ // packages/models/src/lib/audit-output.ts
190
+ import { z as z4 } from "zod";
191
+
192
+ // packages/models/src/lib/issue.ts
205
193
  import { z as z3 } from "zod";
206
194
  var sourceFileLocationSchema = z3.object(
207
195
  {
208
- file: filePathSchema("Relative path to source file in Git repo"),
196
+ file: filePathSchema.describe("Relative path to source file in Git repo"),
209
197
  position: z3.object(
210
198
  {
211
- startLine: positiveIntSchema("Start line"),
212
- startColumn: positiveIntSchema("Start column").optional(),
213
- endLine: positiveIntSchema("End line").optional(),
214
- endColumn: positiveIntSchema("End column").optional()
199
+ startLine: positiveIntSchema.describe("Start line"),
200
+ startColumn: positiveIntSchema.describe("Start column").optional(),
201
+ endLine: positiveIntSchema.describe("End line").optional(),
202
+ endColumn: positiveIntSchema.describe("End column").optional()
215
203
  },
216
204
  { description: "Location in file" }
217
205
  ).optional()
@@ -231,21 +219,21 @@ var issueSchema = z3.object(
231
219
  );
232
220
 
233
221
  // packages/models/src/lib/audit-output.ts
234
- import { z as z4 } from "zod";
222
+ var auditDetailsSchema = z4.object(
223
+ {
224
+ issues: z4.array(issueSchema, { description: "List of findings" })
225
+ },
226
+ { description: "Detailed information" }
227
+ );
235
228
  var auditOutputSchema = z4.object(
236
229
  {
237
- slug: slugSchema("Reference to audit"),
230
+ slug: slugSchema.describe("Reference to audit"),
238
231
  displayValue: z4.string({ description: "Formatted value (e.g. '0.9 s', '2.1 MB')" }).optional(),
239
- value: positiveIntSchema("Raw numeric value"),
232
+ value: nonnegativeIntSchema.describe("Raw numeric value"),
240
233
  score: z4.number({
241
234
  description: "Value between 0 and 1"
242
235
  }).min(0).max(1),
243
- details: z4.object(
244
- {
245
- issues: z4.array(issueSchema, { description: "List of findings" })
246
- },
247
- { description: "Detailed information" }
248
- ).optional()
236
+ details: auditDetailsSchema.optional()
249
237
  },
250
238
  { description: "Audit information" }
251
239
  );
@@ -275,7 +263,7 @@ var categoryRefSchema = weightedRefSchema(
275
263
  type: z5.enum(["audit", "group"], {
276
264
  description: "Discriminant for reference kind, affects where `slug` is looked up"
277
265
  }),
278
- plugin: slugSchema(
266
+ plugin: slugSchema.describe(
279
267
  "Plugin slug (plugin should contain referenced audit or group)"
280
268
  )
281
269
  })
@@ -335,10 +323,8 @@ import { z as z11 } from "zod";
335
323
  import { z as z6 } from "zod";
336
324
  var formatSchema = z6.enum(["json", "md"]);
337
325
  var persistConfigSchema = z6.object({
338
- outputDir: filePathSchema("Artifacts folder").optional(),
339
- filename: fileNameSchema(
340
- "Artifacts file name (without extension)"
341
- ).optional(),
326
+ outputDir: filePathSchema.describe("Artifacts folder").optional(),
327
+ filename: fileNameSchema.describe("Artifacts file name (without extension)").optional(),
342
328
  format: z6.array(formatSchema).optional()
343
329
  });
344
330
 
@@ -399,7 +385,7 @@ var runnerConfigSchema = z8.object(
399
385
  description: "Shell command to execute"
400
386
  }),
401
387
  args: z8.array(z8.string({ description: "Command arguments" })).optional(),
402
- outputFile: filePathSchema("Output path"),
388
+ outputFile: filePathSchema.describe("Output path"),
403
389
  outputTransform: outputTransformSchema.optional()
404
390
  },
405
391
  {
@@ -419,7 +405,7 @@ var pluginMetaSchema = packageVersionSchema().merge(
419
405
  })
420
406
  ).merge(
421
407
  z9.object({
422
- slug: slugSchema("Unique plugin slug within core config"),
408
+ slug: slugSchema.describe("Unique plugin slug within core config"),
423
409
  icon: materialIconSchema
424
410
  })
425
411
  );
@@ -452,12 +438,14 @@ function getMissingRefsFromGroups(pluginCfg) {
452
438
  // packages/models/src/lib/upload-config.ts
453
439
  import { z as z10 } from "zod";
454
440
  var uploadConfigSchema = z10.object({
455
- server: urlSchema("URL of deployed portal API"),
441
+ server: urlSchema.describe("URL of deployed portal API"),
456
442
  apiKey: z10.string({
457
443
  description: "API key with write access to portal (use `process.env` for security)"
458
444
  }),
459
- organization: slugSchema("Organization slug from Code PushUp portal"),
460
- project: slugSchema("Project slug from Code PushUp portal"),
445
+ organization: slugSchema.describe(
446
+ "Organization slug from Code PushUp portal"
447
+ ),
448
+ project: slugSchema.describe("Project slug from Code PushUp portal"),
461
449
  timeout: z10.number({ description: "Request timeout in minutes (default is 5)" }).positive().int().optional()
462
450
  });
463
451
 
@@ -591,7 +579,7 @@ import CliTable3 from "cli-table3";
591
579
 
592
580
  // packages/plugin-coverage/package.json
593
581
  var name = "@code-pushup/coverage-plugin";
594
- var version = "0.19.0";
582
+ var version = "0.20.1";
595
583
 
596
584
  // packages/plugin-coverage/src/lib/config.ts
597
585
  import { z as z13 } from "zod";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-pushup/coverage-plugin",
3
- "version": "0.19.0",
3
+ "version": "0.20.1",
4
4
  "dependencies": {
5
5
  "@code-pushup/models": "*",
6
6
  "@code-pushup/utils": "*",
@@ -15,5 +15,45 @@
15
15
  "@nx/devkit": {
16
16
  "optional": true
17
17
  }
18
- }
19
- }
18
+ },
19
+ "license": "MIT",
20
+ "homepage": "https://github.com/code-pushup/cli#readme",
21
+ "bugs": {
22
+ "url": "https://github.com/code-pushup/cli/issues"
23
+ },
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "https://github.com/code-pushup/cli.git",
27
+ "directory": "packages/plugin-coverage"
28
+ },
29
+ "contributors": [
30
+ {
31
+ "name": "Igor Katsuba",
32
+ "email": "igor@katsuba.dev",
33
+ "url": "https://katsuba.dev"
34
+ },
35
+ {
36
+ "name": "Kateřina Pilátová",
37
+ "email": "katerina.pilatova@flowup.cz",
38
+ "url": "https://github.com/Tlacenka"
39
+ },
40
+ {
41
+ "name": "Matěj Chalk",
42
+ "email": "matej.chalk@flowup.cz",
43
+ "url": "https://github.com/matejchalk"
44
+ },
45
+ {
46
+ "name": "Michael Hladky",
47
+ "email": "michael.hladky@push-based.io",
48
+ "url": "https://push-based.io"
49
+ },
50
+ {
51
+ "name": "Michael Seredenko",
52
+ "email": "misha.seredenko@push-based.io",
53
+ "url": "https://github.com/MishaSeredenkoPushBased"
54
+ }
55
+ ],
56
+ "type": "module",
57
+ "main": "./index.js",
58
+ "types": "./src/index.d.ts"
59
+ }