@code-pushup/core 0.8.10 → 0.8.11

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/index.js CHANGED
@@ -43,6 +43,46 @@ function errorItems(items, transform = (items2) => items2.join(", ")) {
43
43
  function exists(value) {
44
44
  return value != null;
45
45
  }
46
+ function getMissingRefsForCategories(categories, plugins) {
47
+ const missingRefs = [];
48
+ const auditRefsFromCategory = categories.flatMap(
49
+ ({ refs }) => refs.filter(({ type }) => type === "audit").map(({ plugin, slug }) => `${plugin}/${slug}`)
50
+ );
51
+ const auditRefsFromPlugins = plugins.flatMap(
52
+ ({ audits, slug: pluginSlug }) => {
53
+ return audits.map(({ slug }) => `${pluginSlug}/${slug}`);
54
+ }
55
+ );
56
+ const missingAuditRefs = hasMissingStrings(
57
+ auditRefsFromCategory,
58
+ auditRefsFromPlugins
59
+ );
60
+ if (Array.isArray(missingAuditRefs) && missingAuditRefs.length > 0) {
61
+ missingRefs.push(...missingAuditRefs);
62
+ }
63
+ const groupRefsFromCategory = categories.flatMap(
64
+ ({ refs }) => refs.filter(({ type }) => type === "group").map(({ plugin, slug }) => `${plugin}#${slug} (group)`)
65
+ );
66
+ const groupRefsFromPlugins = plugins.flatMap(
67
+ ({ groups, slug: pluginSlug }) => {
68
+ return Array.isArray(groups) ? groups.map(({ slug }) => `${pluginSlug}#${slug} (group)`) : [];
69
+ }
70
+ );
71
+ const missingGroupRefs = hasMissingStrings(
72
+ groupRefsFromCategory,
73
+ groupRefsFromPlugins
74
+ );
75
+ if (Array.isArray(missingGroupRefs) && missingGroupRefs.length > 0) {
76
+ missingRefs.push(...missingGroupRefs);
77
+ }
78
+ return missingRefs.length ? missingRefs : false;
79
+ }
80
+ function missingRefsForCategoriesErrorMsg(categories, plugins) {
81
+ const missingRefs = getMissingRefsForCategories(categories, plugins);
82
+ return `The following category references need to point to an audit or group: ${errorItems(
83
+ missingRefs
84
+ )}`;
85
+ }
46
86
 
47
87
  // packages/models/src/lib/implementation/schemas.ts
48
88
  function executionMetaSchema(options = {
@@ -101,15 +141,13 @@ function positiveIntSchema(description) {
101
141
  return z.number({ description }).int().nonnegative();
102
142
  }
103
143
  function packageVersionSchema(options) {
104
- let { versionDescription, optional } = options || {};
105
- versionDescription = versionDescription || "NPM version of the package";
106
- optional = !!optional;
144
+ const { versionDescription = "NPM version of the package", required } = options ?? {};
107
145
  const packageSchema = z.string({ description: "NPM package name" });
108
146
  const versionSchema = z.string({ description: versionDescription });
109
147
  return z.object(
110
148
  {
111
- packageName: optional ? packageSchema.optional() : packageSchema,
112
- version: optional ? versionSchema.optional() : versionSchema
149
+ packageName: required ? packageSchema : packageSchema.optional(),
150
+ version: required ? versionSchema : versionSchema.optional()
113
151
  },
114
152
  { description: "NPM package name and version of a published package" }
115
153
  );
@@ -171,7 +209,7 @@ var pluginAuditsSchema = z2.array(auditSchema, {
171
209
  );
172
210
  function duplicateSlugsInAuditsErrorMsg(audits) {
173
211
  const duplicateRefs = getDuplicateSlugsInAudits(audits);
174
- return `In plugin audits the slugs are not unique: ${errorItems(
212
+ return `In plugin audits the following slugs are not unique: ${errorItems(
175
213
  duplicateRefs
176
214
  )}`;
177
215
  }
@@ -360,7 +398,9 @@ function getDuplicateRefsInGroups(groups) {
360
398
  }
361
399
  function duplicateSlugsInGroupsErrorMsg(groups) {
362
400
  const duplicateRefs = getDuplicateSlugsInGroups(groups);
363
- return `In groups the slugs are not unique: ${errorItems(duplicateRefs)}`;
401
+ return `In groups the following slugs are not unique: ${errorItems(
402
+ duplicateRefs
403
+ )}`;
364
404
  }
365
405
  function getDuplicateSlugsInGroups(groups) {
366
406
  return Array.isArray(groups) ? hasDuplicateStrings(groups.map(({ slug }) => slug)) : false;
@@ -386,9 +426,7 @@ var onProgressSchema = z8.function().args(z8.unknown()).returns(z8.void());
386
426
  var runnerFunctionSchema = z8.function().args(onProgressSchema.optional()).returns(z8.union([auditOutputsSchema, z8.promise(auditOutputsSchema)]));
387
427
 
388
428
  // packages/models/src/lib/plugin-config.ts
389
- var pluginMetaSchema = packageVersionSchema({
390
- optional: true
391
- }).merge(
429
+ var pluginMetaSchema = packageVersionSchema().merge(
392
430
  metaSchema({
393
431
  titleDescription: "Descriptive name",
394
432
  descriptionDescription: "Description (markdown)",
@@ -397,7 +435,7 @@ var pluginMetaSchema = packageVersionSchema({
397
435
  })
398
436
  ).merge(
399
437
  z9.object({
400
- slug: slugSchema("References plugin. ID (unique within core config)"),
438
+ slug: slugSchema("Unique plugin slug within core config"),
401
439
  icon: materialIconSchema
402
440
  })
403
441
  );
@@ -414,20 +452,17 @@ var pluginConfigSchema = pluginMetaSchema.merge(pluginDataSchema).refine(
414
452
  );
415
453
  function missingRefsFromGroupsErrorMsg(pluginCfg) {
416
454
  const missingRefs = getMissingRefsFromGroups(pluginCfg);
417
- return `In the groups, the following audit ref's needs to point to a audit in this plugin config: ${errorItems(
455
+ return `The following group references need to point to an existing audit in this plugin config: ${errorItems(
418
456
  missingRefs
419
457
  )}`;
420
458
  }
421
459
  function getMissingRefsFromGroups(pluginCfg) {
422
- if (pluginCfg?.groups?.length && pluginCfg?.audits?.length) {
423
- const groups = pluginCfg?.groups || [];
424
- const audits = pluginCfg?.audits || [];
425
- return hasMissingStrings(
426
- groups.flatMap(({ refs: audits2 }) => audits2.map(({ slug: ref }) => ref)),
427
- audits.map(({ slug }) => slug)
428
- );
429
- }
430
- return false;
460
+ return hasMissingStrings(
461
+ pluginCfg.groups?.flatMap(
462
+ ({ refs: audits }) => audits.map(({ slug: ref }) => ref)
463
+ ) ?? [],
464
+ pluginCfg.audits.map(({ slug }) => slug)
465
+ );
431
466
  }
432
467
 
433
468
  // packages/models/src/lib/upload-config.ts
@@ -437,19 +472,15 @@ var uploadConfigSchema = z10.object({
437
472
  apiKey: z10.string({
438
473
  description: "API key with write access to portal (use `process.env` for security)"
439
474
  }),
440
- organization: z10.string({
441
- description: "Organization in code versioning system"
442
- }),
443
- project: z10.string({
444
- description: "Project in code versioning system"
445
- })
475
+ organization: slugSchema("Organization slug from Code PushUp portal"),
476
+ project: slugSchema("Project slug from Code PushUp portal")
446
477
  });
447
478
 
448
479
  // packages/models/src/lib/core-config.ts
449
480
  var unrefinedCoreConfigSchema = z11.object({
450
481
  plugins: z11.array(pluginConfigSchema, {
451
482
  description: "List of plugins to be used (official, community-provided, or custom)"
452
- }),
483
+ }).min(1),
453
484
  /** portal configuration for persisting results */
454
485
  persist: persistConfigSchema.optional(),
455
486
  /** portal configuration for uploading results */
@@ -459,52 +490,15 @@ var unrefinedCoreConfigSchema = z11.object({
459
490
  var coreConfigSchema = refineCoreConfig(unrefinedCoreConfigSchema);
460
491
  function refineCoreConfig(schema) {
461
492
  return schema.refine(
462
- (coreCfg) => !getMissingRefsForCategories(coreCfg),
493
+ (coreCfg) => !getMissingRefsForCategories(coreCfg.categories, coreCfg.plugins),
463
494
  (coreCfg) => ({
464
- message: missingRefsForCategoriesErrorMsg(coreCfg)
495
+ message: missingRefsForCategoriesErrorMsg(
496
+ coreCfg.categories,
497
+ coreCfg.plugins
498
+ )
465
499
  })
466
500
  );
467
501
  }
468
- function missingRefsForCategoriesErrorMsg(coreCfg) {
469
- const missingRefs = getMissingRefsForCategories(coreCfg);
470
- return `In the categories, the following plugin refs do not exist in the provided plugins: ${errorItems(
471
- missingRefs
472
- )}`;
473
- }
474
- function getMissingRefsForCategories(coreCfg) {
475
- const missingRefs = [];
476
- const auditRefsFromCategory = coreCfg.categories.flatMap(
477
- ({ refs }) => refs.filter(({ type }) => type === "audit").map(({ plugin, slug }) => `${plugin}/${slug}`)
478
- );
479
- const auditRefsFromPlugins = coreCfg.plugins.flatMap(
480
- ({ audits, slug: pluginSlug }) => {
481
- return audits.map(({ slug }) => `${pluginSlug}/${slug}`);
482
- }
483
- );
484
- const missingAuditRefs = hasMissingStrings(
485
- auditRefsFromCategory,
486
- auditRefsFromPlugins
487
- );
488
- if (Array.isArray(missingAuditRefs) && missingAuditRefs.length > 0) {
489
- missingRefs.push(...missingAuditRefs);
490
- }
491
- const groupRefsFromCategory = coreCfg.categories.flatMap(
492
- ({ refs }) => refs.filter(({ type }) => type === "group").map(({ plugin, slug }) => `${plugin}#${slug} (group)`)
493
- );
494
- const groupRefsFromPlugins = coreCfg.plugins.flatMap(
495
- ({ groups, slug: pluginSlug }) => {
496
- return Array.isArray(groups) ? groups.map(({ slug }) => `${pluginSlug}#${slug} (group)`) : [];
497
- }
498
- );
499
- const missingGroupRefs = hasMissingStrings(
500
- groupRefsFromCategory,
501
- groupRefsFromPlugins
502
- );
503
- if (Array.isArray(missingGroupRefs) && missingGroupRefs.length > 0) {
504
- missingRefs.push(...missingGroupRefs);
505
- }
506
- return missingRefs.length ? missingRefs : false;
507
- }
508
502
 
509
503
  // packages/models/src/lib/implementation/constants.ts
510
504
  var PERSIST_OUTPUT_DIR = ".code-pushup";
@@ -524,9 +518,32 @@ var pluginReportSchema = pluginMetaSchema.merge(
524
518
  audits: z12.array(auditReportSchema),
525
519
  groups: z12.array(groupSchema).optional()
526
520
  })
521
+ ).refine(
522
+ (pluginReport) => !getMissingRefsFromGroups2(pluginReport.audits, pluginReport.groups ?? []),
523
+ (pluginReport) => ({
524
+ message: missingRefsFromGroupsErrorMsg2(
525
+ pluginReport.audits,
526
+ pluginReport.groups ?? []
527
+ )
528
+ })
527
529
  );
530
+ function missingRefsFromGroupsErrorMsg2(audits, groups) {
531
+ const missingRefs = getMissingRefsFromGroups2(audits, groups);
532
+ return `group references need to point to an existing audit in this plugin report: ${errorItems(
533
+ missingRefs
534
+ )}`;
535
+ }
536
+ function getMissingRefsFromGroups2(audits, groups) {
537
+ return hasMissingStrings(
538
+ groups.flatMap(
539
+ ({ refs: auditRefs }) => auditRefs.map(({ slug: ref }) => ref)
540
+ ),
541
+ audits.map(({ slug }) => slug)
542
+ );
543
+ }
528
544
  var reportSchema = packageVersionSchema({
529
- versionDescription: "NPM version of the CLI"
545
+ versionDescription: "NPM version of the CLI",
546
+ required: true
530
547
  }).merge(
531
548
  executionMetaSchema({
532
549
  descriptionDate: "Start date and time of the collect run",
@@ -536,10 +553,18 @@ var reportSchema = packageVersionSchema({
536
553
  z12.object(
537
554
  {
538
555
  categories: z12.array(categoryConfigSchema),
539
- plugins: z12.array(pluginReportSchema)
556
+ plugins: z12.array(pluginReportSchema).min(1)
540
557
  },
541
558
  { description: "Collect output data" }
542
559
  )
560
+ ).refine(
561
+ (report) => !getMissingRefsForCategories(report.categories, report.plugins),
562
+ (report) => ({
563
+ message: missingRefsForCategoriesErrorMsg(
564
+ report.categories,
565
+ report.plugins
566
+ )
567
+ })
543
568
  );
544
569
 
545
570
  // packages/utils/src/lib/constants.ts
@@ -1679,7 +1704,7 @@ function auditOutputsCorrelateWithPluginOutput(auditOutputs, pluginConfigAudits)
1679
1704
 
1680
1705
  // packages/core/package.json
1681
1706
  var name = "@code-pushup/core";
1682
- var version = "0.8.10";
1707
+ var version = "0.8.11";
1683
1708
 
1684
1709
  // packages/core/src/lib/implementation/collect.ts
1685
1710
  async function collect(options) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-pushup/core",
3
- "version": "0.8.10",
3
+ "version": "0.8.11",
4
4
  "dependencies": {
5
5
  "@code-pushup/models": "*",
6
6
  "@code-pushup/utils": "*",
@@ -1,8 +1,8 @@
1
1
  import { CategoryConfigRefType, IssueSourceType, IssueSeverity as PortalIssueSeverity } from '@code-pushup/portal-client';
2
2
  import { Report } from '@code-pushup/models';
3
3
  export declare function jsonToGql(report: Report): {
4
- packageName: string | undefined;
5
- packageVersion: string | undefined;
4
+ packageName: string;
5
+ packageVersion: string;
6
6
  commandStartDate: string;
7
7
  commandDuration: number;
8
8
  plugins: {
@@ -38,7 +38,7 @@ export declare function jsonToGql(report: Report): {
38
38
  weight: number;
39
39
  }[];
40
40
  }[] | undefined;
41
- icon: "slug" | "search" | "blink" | "key" | "folder-robot" | "folder-src" | "folder-dist" | "folder-css" | "folder-sass" | "folder-images" | "folder-scripts" | "folder-node" | "folder-javascript" | "folder-json" | "folder-font" | "folder-bower" | "folder-test" | "folder-jinja" | "folder-markdown" | "folder-php" | "folder-phpmailer" | "folder-sublime" | "folder-docs" | "folder-git" | "folder-github" | "folder-gitlab" | "folder-vscode" | "folder-views" | "folder-vue" | "folder-vuepress" | "folder-expo" | "folder-config" | "folder-i18n" | "folder-components" | "folder-verdaccio" | "folder-aurelia" | "folder-resource" | "folder-lib" | "folder-theme" | "folder-webpack" | "folder-global" | "folder-public" | "folder-include" | "folder-docker" | "folder-database" | "folder-log" | "folder-target" | "folder-temp" | "folder-aws" | "folder-audio" | "folder-video" | "folder-kubernetes" | "folder-import" | "folder-export" | "folder-wakatime" | "folder-circleci" | "folder-wordpress" | "folder-gradle" | "folder-coverage" | "folder-class" | "folder-other" | "folder-lua" | "folder-typescript" | "folder-graphql" | "folder-routes" | "folder-ci" | "folder-benchmark" | "folder-messages" | "folder-less" | "folder-gulp" | "folder-python" | "folder-mojo" | "folder-moon" | "folder-debug" | "folder-fastlane" | "folder-plugin" | "folder-middleware" | "folder-controller" | "folder-ansible" | "folder-server" | "folder-client" | "folder-tasks" | "folder-android" | "folder-ios" | "folder-upload" | "folder-download" | "folder-tools" | "folder-helper" | "folder-serverless" | "folder-api" | "folder-app" | "folder-apollo" | "folder-archive" | "folder-batch" | "folder-buildkite" | "folder-cluster" | "folder-command" | "folder-constant" | "folder-container" | "folder-content" | "folder-context" | "folder-core" | "folder-delta" | "folder-dump" | "folder-examples" | "folder-environment" | "folder-functions" | "folder-generator" | "folder-hook" | "folder-job" | "folder-keys" | "folder-layout" | "folder-mail" | "folder-mappings" | "folder-meta" | "folder-changesets" | "folder-packages" | "folder-shared" | "folder-shader" | "folder-stack" | "folder-template" | "folder-utils" | "folder-supabase" | "folder-private" | "folder-linux" | "folder-windows" | "folder-macos" | "folder-error" | "folder-event" | "folder-secure" | "folder-custom" | "folder-mock" | "folder-syntax" | "folder-vm" | "folder-stylus" | "folder-flow" | "folder-rules" | "folder-review" | "folder-animation" | "folder-guard" | "folder-prisma" | "folder-pipe" | "folder-svg" | "folder-terraform" | "folder-mobile" | "folder-stencil" | "folder-firebase" | "folder-svelte" | "folder-update" | "folder-intellij" | "folder-azure-pipelines" | "folder-mjml" | "folder-admin" | "folder-scala" | "folder-connection" | "folder-quasar" | "folder-next" | "folder-cobol" | "folder-yarn" | "folder-husky" | "folder-storybook" | "folder-base" | "folder-cart" | "folder-home" | "folder-project" | "folder-interface" | "folder-netlify" | "folder-enum" | "folder-contract" | "folder-queue" | "folder-vercel" | "folder-cypress" | "folder-decorators" | "folder-java" | "folder-resolver" | "folder-angular" | "folder-unity" | "folder-pdf" | "folder-proto" | "folder-plastic" | "folder-gamemaker" | "folder-mercurial" | "folder-godot" | "folder-lottie" | "folder-taskfile" | "folder-robot-open" | "folder-src-open" | "folder-dist-open" | "folder-css-open" | "folder-sass-open" | "folder-images-open" | "folder-scripts-open" | "folder-node-open" | "folder-javascript-open" | "folder-json-open" | "folder-font-open" | "folder-bower-open" | "folder-test-open" | "folder-jinja-open" | "folder-markdown-open" | "folder-php-open" | "folder-phpmailer-open" | "folder-sublime-open" | "folder-docs-open" | "folder-git-open" | "folder-github-open" | "folder-gitlab-open" | "folder-vscode-open" | "folder-views-open" | "folder-vue-open" | "folder-vuepress-open" | "folder-expo-open" | "folder-config-open" | "folder-i18n-open" | "folder-components-open" | "folder-verdaccio-open" | "folder-aurelia-open" | "folder-resource-open" | "folder-lib-open" | "folder-theme-open" | "folder-webpack-open" | "folder-global-open" | "folder-public-open" | "folder-include-open" | "folder-docker-open" | "folder-database-open" | "folder-log-open" | "folder-target-open" | "folder-temp-open" | "folder-aws-open" | "folder-audio-open" | "folder-video-open" | "folder-kubernetes-open" | "folder-import-open" | "folder-export-open" | "folder-wakatime-open" | "folder-circleci-open" | "folder-wordpress-open" | "folder-gradle-open" | "folder-coverage-open" | "folder-class-open" | "folder-other-open" | "folder-lua-open" | "folder-typescript-open" | "folder-graphql-open" | "folder-routes-open" | "folder-ci-open" | "folder-benchmark-open" | "folder-messages-open" | "folder-less-open" | "folder-gulp-open" | "folder-python-open" | "folder-mojo-open" | "folder-moon-open" | "folder-debug-open" | "folder-fastlane-open" | "folder-plugin-open" | "folder-middleware-open" | "folder-controller-open" | "folder-ansible-open" | "folder-server-open" | "folder-client-open" | "folder-tasks-open" | "folder-android-open" | "folder-ios-open" | "folder-upload-open" | "folder-download-open" | "folder-tools-open" | "folder-helper-open" | "folder-serverless-open" | "folder-api-open" | "folder-app-open" | "folder-apollo-open" | "folder-archive-open" | "folder-batch-open" | "folder-buildkite-open" | "folder-cluster-open" | "folder-command-open" | "folder-constant-open" | "folder-container-open" | "folder-content-open" | "folder-context-open" | "folder-core-open" | "folder-delta-open" | "folder-dump-open" | "folder-examples-open" | "folder-environment-open" | "folder-functions-open" | "folder-generator-open" | "folder-hook-open" | "folder-job-open" | "folder-keys-open" | "folder-layout-open" | "folder-mail-open" | "folder-mappings-open" | "folder-meta-open" | "folder-changesets-open" | "folder-packages-open" | "folder-shared-open" | "folder-shader-open" | "folder-stack-open" | "folder-template-open" | "folder-utils-open" | "folder-supabase-open" | "folder-private-open" | "folder-linux-open" | "folder-windows-open" | "folder-macos-open" | "folder-error-open" | "folder-event-open" | "folder-secure-open" | "folder-custom-open" | "folder-mock-open" | "folder-syntax-open" | "folder-vm-open" | "folder-stylus-open" | "folder-flow-open" | "folder-rules-open" | "folder-review-open" | "folder-animation-open" | "folder-guard-open" | "folder-prisma-open" | "folder-pipe-open" | "folder-svg-open" | "folder-terraform-open" | "folder-mobile-open" | "folder-stencil-open" | "folder-firebase-open" | "folder-svelte-open" | "folder-update-open" | "folder-intellij-open" | "folder-azure-pipelines-open" | "folder-mjml-open" | "folder-admin-open" | "folder-scala-open" | "folder-connection-open" | "folder-quasar-open" | "folder-next-open" | "folder-cobol-open" | "folder-yarn-open" | "folder-husky-open" | "folder-storybook-open" | "folder-base-open" | "folder-cart-open" | "folder-home-open" | "folder-project-open" | "folder-interface-open" | "folder-netlify-open" | "folder-enum-open" | "folder-contract-open" | "folder-queue-open" | "folder-vercel-open" | "folder-cypress-open" | "folder-decorators-open" | "folder-java-open" | "folder-resolver-open" | "folder-angular-open" | "folder-unity-open" | "folder-pdf-open" | "folder-proto-open" | "folder-plastic-open" | "folder-gamemaker-open" | "folder-mercurial-open" | "folder-godot-open" | "folder-lottie-open" | "folder-taskfile-open" | "html" | "pug" | "markdown" | "css" | "sass" | "less" | "json" | "hjson" | "jinja" | "proto" | "sublime" | "twine" | "yaml" | "xml" | "image" | "javascript" | "react" | "react_ts" | "routing" | "settings" | "typescript-def" | "markojs" | "astro" | "pdf" | "table" | "vscode" | "visualstudio" | "database" | "kusto" | "csharp" | "qsharp" | "zip" | "vala" | "zig" | "exe" | "hex" | "java" | "jar" | "javaclass" | "c" | "h" | "cpp" | "hpp" | "objective-c" | "objective-cpp" | "rc" | "go" | "python" | "python-misc" | "url" | "console" | "powershell" | "gradle" | "word" | "certificate" | "font" | "lib" | "ruby" | "fsharp" | "swift" | "arduino" | "docker" | "tex" | "powerpoint" | "video" | "virtual" | "email" | "audio" | "coffee" | "document" | "graphql" | "rust" | "raml" | "xaml" | "haskell" | "kotlin" | "otne" | "git" | "lua" | "clojure" | "groovy" | "r" | "dart" | "dart_generated" | "actionscript" | "mxml" | "autohotkey" | "flash" | "swc" | "cmake" | "assembly" | "vue" | "ocaml" | "odin" | "javascript-map" | "css-map" | "lock" | "handlebars" | "perl" | "haxe" | "test-ts" | "test-jsx" | "test-js" | "angular" | "angular-component" | "angular-guard" | "angular-service" | "angular-pipe" | "angular-directive" | "angular-resolver" | "puppet" | "elixir" | "livescript" | "erlang" | "twig" | "julia" | "elm" | "purescript" | "smarty" | "stylus" | "reason" | "bucklescript" | "merlin" | "verilog" | "mathematica" | "wolframlanguage" | "nunjucks" | "robot" | "solidity" | "autoit" | "haml" | "yang" | "mjml" | "terraform" | "laravel" | "applescript" | "cake" | "cucumber" | "nim" | "apiblueprint" | "riot" | "vfl" | "kl" | "postcss" | "todo" | "coldfusion" | "cabal" | "nix" | "slim" | "http" | "restql" | "kivy" | "graphcool" | "sbt" | "android" | "tune" | "gitlab" | "jenkins" | "figma" | "crystal" | "drone" | "cuda" | "log" | "dotjs" | "ejs" | "wakatime" | "processing" | "storybook" | "wepy" | "hcl" | "san" | "django" | "red" | "makefile" | "foxpro" | "i18n" | "webassembly" | "jupyter" | "d" | "mdx" | "mdsvex" | "ballerina" | "racket" | "bazel" | "mint" | "velocity" | "godot" | "godot-assets" | "azure-pipelines" | "azure" | "vagrant" | "prisma" | "razor" | "abc" | "asciidoc" | "edge" | "scheme" | "lisp" | "3d" | "svg" | "svelte" | "vim" | "moonscript" | "advpl_prw" | "advpl_ptm" | "advpl_tlpp" | "advpl_include" | "disc" | "fortran" | "tcl" | "liquid" | "prolog" | "coconut" | "sketch" | "pawn" | "forth" | "uml" | "meson" | "dhall" | "sml" | "opam" | "imba" | "drawio" | "pascal" | "shaderlab" | "sas" | "nuget" | "command" | "denizenscript" | "nginx" | "minecraft" | "rescript" | "rescript-interface" | "brainfuck" | "bicep" | "cobol" | "grain" | "lolcode" | "idris" | "pipeline" | "opa" | "windicss" | "scala" | "lilypond" | "vlang" | "chess" | "gemini" | "tsconfig" | "tauri" | "jsconfig" | "ada" | "horusec" | "coala" | "dinophp" | "teal" | "template" | "shader" | "siyuan" | "ndst" | "tobi" | "gleam" | "steadybit" | "tree" | "cadence" | "antlr" | "stylable" | "pinejs" | "taskfile" | "gamemaker" | "tldraw" | "typst" | "mermaid" | "mojo" | "roblox" | "spwn" | "templ" | "chrome" | "stan" | "abap" | "lottie" | "apps-script" | "playwright" | "go-mod" | "gemfile" | "rubocop" | "rspec" | "semgrep" | "vue-config" | "nuxt" | "vercel" | "verdaccio" | "next" | "remix" | "posthtml" | "webpack" | "ionic" | "gulp" | "nodejs" | "npm" | "yarn" | "turborepo" | "babel" | "blitz" | "contributing" | "readme" | "changelog" | "architecture" | "credits" | "authors" | "flow" | "favicon" | "karma" | "bithound" | "svgo" | "appveyor" | "travis" | "codecov" | "sonarcloud" | "protractor" | "fusebox" | "heroku" | "editorconfig" | "bower" | "eslint" | "conduct" | "watchman" | "aurelia" | "auto" | "mocha" | "firebase" | "rollup" | "hack" | "hardhat" | "stylelint" | "code-climate" | "prettier" | "renovate" | "apollo" | "nodemon" | "webhint" | "browserlist" | "snyk" | "sequelize" | "gatsby" | "circleci" | "cloudfoundry" | "grunt" | "jest" | "fastlane" | "helm" | "wallaby" | "stencil" | "semantic-release" | "bitbucket" | "istanbul" | "tailwindcss" | "buildkite" | "netlify" | "nest" | "moon" | "percy" | "gitpod" | "codeowners" | "gcp" | "husky" | "tilt" | "capacitor" | "adonis" | "commitlint" | "buck" | "nrwl" | "dune" | "roadmap" | "stryker" | "modernizr" | "stitches" | "replit" | "snowpack" | "quasar" | "dependabot" | "vite" | "vitest" | "lerna" | "textlint" | "sentry" | "phpunit" | "php-cs-fixer" | "robots" | "maven" | "serverless" | "supabase" | "ember" | "poetry" | "parcel" | "astyle" | "lighthouse" | "svgr" | "rome" | "cypress" | "plop" | "tobimake" | "pnpm" | "gridsome" | "caddy" | "bun" | "nano-staged" | "craco" | "mercurial" | "deno" | "plastic" | "unocss" | "ifanr-cloud" | "concourse" | "werf" | "panda" | "biome" | "esbuild" | "puppeteer" | "kubernetes" | "matlab" | "diff" | "typescript" | "php" | "salesforce" | "blink_light" | "jinja_light" | "crystal_light" | "drone_light" | "wakatime_light" | "hcl_light" | "uml_light" | "chess_light" | "tldraw_light" | "rubocop_light" | "vercel_light" | "next_light" | "remix_light" | "turborepo_light" | "auto_light" | "stylelint_light" | "code-climate_light" | "browserlist_light" | "circleci_light" | "semantic-release_light" | "netlify_light" | "stitches_light" | "snowpack_light" | "pnpm_light" | "bun_light" | "nano-staged_light" | "deno_light" | "folder-jinja_light" | "folder-intellij_light" | "folder-jinja-open_light" | "folder-intellij-open_light" | "file" | "folder" | "folder-open" | "folder-root" | "folder-root-open" | "php_elephant" | "php_elephant_pink" | "go_gopher" | "nodejs_alt" | "silverstripe";
41
+ icon: "slug" | "file" | "command" | "search" | "blink" | "key" | "folder-robot" | "folder-src" | "folder-dist" | "folder-css" | "folder-sass" | "folder-images" | "folder-scripts" | "folder-node" | "folder-javascript" | "folder-json" | "folder-font" | "folder-bower" | "folder-test" | "folder-jinja" | "folder-markdown" | "folder-php" | "folder-phpmailer" | "folder-sublime" | "folder-docs" | "folder-git" | "folder-github" | "folder-gitlab" | "folder-vscode" | "folder-views" | "folder-vue" | "folder-vuepress" | "folder-expo" | "folder-config" | "folder-i18n" | "folder-components" | "folder-verdaccio" | "folder-aurelia" | "folder-resource" | "folder-lib" | "folder-theme" | "folder-webpack" | "folder-global" | "folder-public" | "folder-include" | "folder-docker" | "folder-database" | "folder-log" | "folder-target" | "folder-temp" | "folder-aws" | "folder-audio" | "folder-video" | "folder-kubernetes" | "folder-import" | "folder-export" | "folder-wakatime" | "folder-circleci" | "folder-wordpress" | "folder-gradle" | "folder-coverage" | "folder-class" | "folder-other" | "folder-lua" | "folder-typescript" | "folder-graphql" | "folder-routes" | "folder-ci" | "folder-benchmark" | "folder-messages" | "folder-less" | "folder-gulp" | "folder-python" | "folder-mojo" | "folder-moon" | "folder-debug" | "folder-fastlane" | "folder-plugin" | "folder-middleware" | "folder-controller" | "folder-ansible" | "folder-server" | "folder-client" | "folder-tasks" | "folder-android" | "folder-ios" | "folder-upload" | "folder-download" | "folder-tools" | "folder-helper" | "folder-serverless" | "folder-api" | "folder-app" | "folder-apollo" | "folder-archive" | "folder-batch" | "folder-buildkite" | "folder-cluster" | "folder-command" | "folder-constant" | "folder-container" | "folder-content" | "folder-context" | "folder-core" | "folder-delta" | "folder-dump" | "folder-examples" | "folder-environment" | "folder-functions" | "folder-generator" | "folder-hook" | "folder-job" | "folder-keys" | "folder-layout" | "folder-mail" | "folder-mappings" | "folder-meta" | "folder-changesets" | "folder-packages" | "folder-shared" | "folder-shader" | "folder-stack" | "folder-template" | "folder-utils" | "folder-supabase" | "folder-private" | "folder-linux" | "folder-windows" | "folder-macos" | "folder-error" | "folder-event" | "folder-secure" | "folder-custom" | "folder-mock" | "folder-syntax" | "folder-vm" | "folder-stylus" | "folder-flow" | "folder-rules" | "folder-review" | "folder-animation" | "folder-guard" | "folder-prisma" | "folder-pipe" | "folder-svg" | "folder-terraform" | "folder-mobile" | "folder-stencil" | "folder-firebase" | "folder-svelte" | "folder-update" | "folder-intellij" | "folder-azure-pipelines" | "folder-mjml" | "folder-admin" | "folder-scala" | "folder-connection" | "folder-quasar" | "folder-next" | "folder-cobol" | "folder-yarn" | "folder-husky" | "folder-storybook" | "folder-base" | "folder-cart" | "folder-home" | "folder-project" | "folder-interface" | "folder-netlify" | "folder-enum" | "folder-contract" | "folder-queue" | "folder-vercel" | "folder-cypress" | "folder-decorators" | "folder-java" | "folder-resolver" | "folder-angular" | "folder-unity" | "folder-pdf" | "folder-proto" | "folder-plastic" | "folder-gamemaker" | "folder-mercurial" | "folder-godot" | "folder-lottie" | "folder-taskfile" | "folder-robot-open" | "folder-src-open" | "folder-dist-open" | "folder-css-open" | "folder-sass-open" | "folder-images-open" | "folder-scripts-open" | "folder-node-open" | "folder-javascript-open" | "folder-json-open" | "folder-font-open" | "folder-bower-open" | "folder-test-open" | "folder-jinja-open" | "folder-markdown-open" | "folder-php-open" | "folder-phpmailer-open" | "folder-sublime-open" | "folder-docs-open" | "folder-git-open" | "folder-github-open" | "folder-gitlab-open" | "folder-vscode-open" | "folder-views-open" | "folder-vue-open" | "folder-vuepress-open" | "folder-expo-open" | "folder-config-open" | "folder-i18n-open" | "folder-components-open" | "folder-verdaccio-open" | "folder-aurelia-open" | "folder-resource-open" | "folder-lib-open" | "folder-theme-open" | "folder-webpack-open" | "folder-global-open" | "folder-public-open" | "folder-include-open" | "folder-docker-open" | "folder-database-open" | "folder-log-open" | "folder-target-open" | "folder-temp-open" | "folder-aws-open" | "folder-audio-open" | "folder-video-open" | "folder-kubernetes-open" | "folder-import-open" | "folder-export-open" | "folder-wakatime-open" | "folder-circleci-open" | "folder-wordpress-open" | "folder-gradle-open" | "folder-coverage-open" | "folder-class-open" | "folder-other-open" | "folder-lua-open" | "folder-typescript-open" | "folder-graphql-open" | "folder-routes-open" | "folder-ci-open" | "folder-benchmark-open" | "folder-messages-open" | "folder-less-open" | "folder-gulp-open" | "folder-python-open" | "folder-mojo-open" | "folder-moon-open" | "folder-debug-open" | "folder-fastlane-open" | "folder-plugin-open" | "folder-middleware-open" | "folder-controller-open" | "folder-ansible-open" | "folder-server-open" | "folder-client-open" | "folder-tasks-open" | "folder-android-open" | "folder-ios-open" | "folder-upload-open" | "folder-download-open" | "folder-tools-open" | "folder-helper-open" | "folder-serverless-open" | "folder-api-open" | "folder-app-open" | "folder-apollo-open" | "folder-archive-open" | "folder-batch-open" | "folder-buildkite-open" | "folder-cluster-open" | "folder-command-open" | "folder-constant-open" | "folder-container-open" | "folder-content-open" | "folder-context-open" | "folder-core-open" | "folder-delta-open" | "folder-dump-open" | "folder-examples-open" | "folder-environment-open" | "folder-functions-open" | "folder-generator-open" | "folder-hook-open" | "folder-job-open" | "folder-keys-open" | "folder-layout-open" | "folder-mail-open" | "folder-mappings-open" | "folder-meta-open" | "folder-changesets-open" | "folder-packages-open" | "folder-shared-open" | "folder-shader-open" | "folder-stack-open" | "folder-template-open" | "folder-utils-open" | "folder-supabase-open" | "folder-private-open" | "folder-linux-open" | "folder-windows-open" | "folder-macos-open" | "folder-error-open" | "folder-event-open" | "folder-secure-open" | "folder-custom-open" | "folder-mock-open" | "folder-syntax-open" | "folder-vm-open" | "folder-stylus-open" | "folder-flow-open" | "folder-rules-open" | "folder-review-open" | "folder-animation-open" | "folder-guard-open" | "folder-prisma-open" | "folder-pipe-open" | "folder-svg-open" | "folder-terraform-open" | "folder-mobile-open" | "folder-stencil-open" | "folder-firebase-open" | "folder-svelte-open" | "folder-update-open" | "folder-intellij-open" | "folder-azure-pipelines-open" | "folder-mjml-open" | "folder-admin-open" | "folder-scala-open" | "folder-connection-open" | "folder-quasar-open" | "folder-next-open" | "folder-cobol-open" | "folder-yarn-open" | "folder-husky-open" | "folder-storybook-open" | "folder-base-open" | "folder-cart-open" | "folder-home-open" | "folder-project-open" | "folder-interface-open" | "folder-netlify-open" | "folder-enum-open" | "folder-contract-open" | "folder-queue-open" | "folder-vercel-open" | "folder-cypress-open" | "folder-decorators-open" | "folder-java-open" | "folder-resolver-open" | "folder-angular-open" | "folder-unity-open" | "folder-pdf-open" | "folder-proto-open" | "folder-plastic-open" | "folder-gamemaker-open" | "folder-mercurial-open" | "folder-godot-open" | "folder-lottie-open" | "folder-taskfile-open" | "html" | "pug" | "markdown" | "css" | "sass" | "less" | "json" | "hjson" | "jinja" | "proto" | "sublime" | "twine" | "yaml" | "xml" | "image" | "javascript" | "react" | "react_ts" | "routing" | "settings" | "typescript-def" | "markojs" | "astro" | "pdf" | "table" | "vscode" | "visualstudio" | "database" | "kusto" | "csharp" | "qsharp" | "zip" | "vala" | "zig" | "exe" | "hex" | "java" | "jar" | "javaclass" | "c" | "h" | "cpp" | "hpp" | "objective-c" | "objective-cpp" | "rc" | "go" | "python" | "python-misc" | "url" | "console" | "powershell" | "gradle" | "word" | "certificate" | "font" | "lib" | "ruby" | "fsharp" | "swift" | "arduino" | "docker" | "tex" | "powerpoint" | "video" | "virtual" | "email" | "audio" | "coffee" | "document" | "graphql" | "rust" | "raml" | "xaml" | "haskell" | "kotlin" | "otne" | "git" | "lua" | "clojure" | "groovy" | "r" | "dart" | "dart_generated" | "actionscript" | "mxml" | "autohotkey" | "flash" | "swc" | "cmake" | "assembly" | "vue" | "ocaml" | "odin" | "javascript-map" | "css-map" | "lock" | "handlebars" | "perl" | "haxe" | "test-ts" | "test-jsx" | "test-js" | "angular" | "angular-component" | "angular-guard" | "angular-service" | "angular-pipe" | "angular-directive" | "angular-resolver" | "puppet" | "elixir" | "livescript" | "erlang" | "twig" | "julia" | "elm" | "purescript" | "smarty" | "stylus" | "reason" | "bucklescript" | "merlin" | "verilog" | "mathematica" | "wolframlanguage" | "nunjucks" | "robot" | "solidity" | "autoit" | "haml" | "yang" | "mjml" | "terraform" | "laravel" | "applescript" | "cake" | "cucumber" | "nim" | "apiblueprint" | "riot" | "vfl" | "kl" | "postcss" | "todo" | "coldfusion" | "cabal" | "nix" | "slim" | "http" | "restql" | "kivy" | "graphcool" | "sbt" | "android" | "tune" | "gitlab" | "jenkins" | "figma" | "crystal" | "drone" | "cuda" | "log" | "dotjs" | "ejs" | "wakatime" | "processing" | "storybook" | "wepy" | "hcl" | "san" | "django" | "red" | "makefile" | "foxpro" | "i18n" | "webassembly" | "jupyter" | "d" | "mdx" | "mdsvex" | "ballerina" | "racket" | "bazel" | "mint" | "velocity" | "godot" | "godot-assets" | "azure-pipelines" | "azure" | "vagrant" | "prisma" | "razor" | "abc" | "asciidoc" | "edge" | "scheme" | "lisp" | "3d" | "svg" | "svelte" | "vim" | "moonscript" | "advpl_prw" | "advpl_ptm" | "advpl_tlpp" | "advpl_include" | "disc" | "fortran" | "tcl" | "liquid" | "prolog" | "coconut" | "sketch" | "pawn" | "forth" | "uml" | "meson" | "dhall" | "sml" | "opam" | "imba" | "drawio" | "pascal" | "shaderlab" | "sas" | "nuget" | "denizenscript" | "nginx" | "minecraft" | "rescript" | "rescript-interface" | "brainfuck" | "bicep" | "cobol" | "grain" | "lolcode" | "idris" | "pipeline" | "opa" | "windicss" | "scala" | "lilypond" | "vlang" | "chess" | "gemini" | "tsconfig" | "tauri" | "jsconfig" | "ada" | "horusec" | "coala" | "dinophp" | "teal" | "template" | "shader" | "siyuan" | "ndst" | "tobi" | "gleam" | "steadybit" | "tree" | "cadence" | "antlr" | "stylable" | "pinejs" | "taskfile" | "gamemaker" | "tldraw" | "typst" | "mermaid" | "mojo" | "roblox" | "spwn" | "templ" | "chrome" | "stan" | "abap" | "lottie" | "apps-script" | "playwright" | "go-mod" | "gemfile" | "rubocop" | "rspec" | "semgrep" | "vue-config" | "nuxt" | "vercel" | "verdaccio" | "next" | "remix" | "posthtml" | "webpack" | "ionic" | "gulp" | "nodejs" | "npm" | "yarn" | "turborepo" | "babel" | "blitz" | "contributing" | "readme" | "changelog" | "architecture" | "credits" | "authors" | "flow" | "favicon" | "karma" | "bithound" | "svgo" | "appveyor" | "travis" | "codecov" | "sonarcloud" | "protractor" | "fusebox" | "heroku" | "editorconfig" | "bower" | "eslint" | "conduct" | "watchman" | "aurelia" | "auto" | "mocha" | "firebase" | "rollup" | "hack" | "hardhat" | "stylelint" | "code-climate" | "prettier" | "renovate" | "apollo" | "nodemon" | "webhint" | "browserlist" | "snyk" | "sequelize" | "gatsby" | "circleci" | "cloudfoundry" | "grunt" | "jest" | "fastlane" | "helm" | "wallaby" | "stencil" | "semantic-release" | "bitbucket" | "istanbul" | "tailwindcss" | "buildkite" | "netlify" | "nest" | "moon" | "percy" | "gitpod" | "codeowners" | "gcp" | "husky" | "tilt" | "capacitor" | "adonis" | "commitlint" | "buck" | "nrwl" | "dune" | "roadmap" | "stryker" | "modernizr" | "stitches" | "replit" | "snowpack" | "quasar" | "dependabot" | "vite" | "vitest" | "lerna" | "textlint" | "sentry" | "phpunit" | "php-cs-fixer" | "robots" | "maven" | "serverless" | "supabase" | "ember" | "poetry" | "parcel" | "astyle" | "lighthouse" | "svgr" | "rome" | "cypress" | "plop" | "tobimake" | "pnpm" | "gridsome" | "caddy" | "bun" | "nano-staged" | "craco" | "mercurial" | "deno" | "plastic" | "unocss" | "ifanr-cloud" | "concourse" | "werf" | "panda" | "biome" | "esbuild" | "puppeteer" | "kubernetes" | "matlab" | "diff" | "typescript" | "php" | "salesforce" | "blink_light" | "jinja_light" | "crystal_light" | "drone_light" | "wakatime_light" | "hcl_light" | "uml_light" | "chess_light" | "tldraw_light" | "rubocop_light" | "vercel_light" | "next_light" | "remix_light" | "turborepo_light" | "auto_light" | "stylelint_light" | "code-climate_light" | "browserlist_light" | "circleci_light" | "semantic-release_light" | "netlify_light" | "stitches_light" | "snowpack_light" | "pnpm_light" | "bun_light" | "nano-staged_light" | "deno_light" | "folder-jinja_light" | "folder-intellij_light" | "folder-jinja-open_light" | "folder-intellij-open_light" | "folder" | "folder-open" | "folder-root" | "folder-root-open" | "php_elephant" | "php_elephant_pink" | "go_gopher" | "nodejs_alt" | "silverstripe";
42
42
  slug: string;
43
43
  title: string;
44
44
  packageName: string | undefined;