@simpleapps-com/augur-config 2.2.8 → 2.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -340,6 +340,37 @@ if (prettierFile && fileContains(prettierFile, "augur-config/prettier")) {
340
340
  fail("prettier", "Prettier config exists", "No Prettier config found");
341
341
  }
342
342
 
343
+ // 7d. Knip for dead code detection
344
+ const knipConfigFile = findFile(
345
+ "knip.json",
346
+ "knip.jsonc",
347
+ "knip.ts",
348
+ "knip.config.ts",
349
+ "knip.config.js"
350
+ );
351
+ const hasKnipDep = !!(pkg?.devDependencies?.knip || pkg?.dependencies?.knip);
352
+ if (knipConfigFile && hasKnipDep) {
353
+ pass("knip", "Knip configured for dead code detection", knipConfigFile);
354
+ } else if (hasKnipDep && !knipConfigFile) {
355
+ warn(
356
+ "knip",
357
+ "Knip installed but no config file found",
358
+ "Add knip.json or knip.ts -- see https://knip.dev/overview/configuration"
359
+ );
360
+ } else if (knipConfigFile && !hasKnipDep) {
361
+ fail(
362
+ "knip",
363
+ "Knip for dead code detection",
364
+ "Config exists but knip not in devDependencies -- run pnpm add -D knip"
365
+ );
366
+ } else {
367
+ fail(
368
+ "knip",
369
+ "Knip for dead code detection",
370
+ "Add knip to devDependencies and create knip.json -- see https://knip.dev"
371
+ );
372
+ }
373
+
343
374
  // 8-12. next.config checks
344
375
  const nextConfigFile = findFile(
345
376
  "next.config.ts",
@@ -763,6 +794,105 @@ if (pkg) {
763
794
  }
764
795
  }
765
796
 
797
+ // ---------------------------------------------------------------------------
798
+ // 23-24. Augur package version checks
799
+ // ---------------------------------------------------------------------------
800
+
801
+ const augurPackageNames = [
802
+ "@simpleapps-com/augur-config",
803
+ "@simpleapps-com/augur-core",
804
+ "@simpleapps-com/augur-hooks",
805
+ "@simpleapps-com/augur-mobile",
806
+ "@simpleapps-com/augur-server",
807
+ "@simpleapps-com/augur-tailwind",
808
+ "@simpleapps-com/augur-utils",
809
+ "@simpleapps-com/augur-web",
810
+ ];
811
+
812
+ if (pkg) {
813
+ const allDeps = { ...pkg.dependencies, ...pkg.devDependencies };
814
+
815
+ // Collect installed augur packages and their version ranges
816
+ const installedAugur = [];
817
+ for (const name of augurPackageNames) {
818
+ const version = allDeps[name];
819
+ if (version) {
820
+ installedAugur.push({ name, version });
821
+ }
822
+ }
823
+
824
+ // 23. Version consistency -- all augur packages should be on the same version
825
+ if (installedAugur.length >= 2) {
826
+ const versions = new Set(installedAugur.map((p) => p.version));
827
+ if (versions.size === 1) {
828
+ pass(
829
+ "augur-version-sync",
830
+ "All augur packages on the same version",
831
+ installedAugur[0].version
832
+ );
833
+ } else {
834
+ const mismatchDetail = installedAugur
835
+ .map((p) => `${p.name.replace("@simpleapps-com/", "")}: ${p.version}`)
836
+ .join(", ");
837
+ fail(
838
+ "augur-version-sync",
839
+ "All augur packages must be on the same version",
840
+ mismatchDetail
841
+ );
842
+ }
843
+ } else if (installedAugur.length === 1) {
844
+ pass("augur-version-sync", "Single augur package installed", installedAugur[0].version);
845
+ } else {
846
+ skip("augur-version-sync", "Augur package version sync", "No augur packages found");
847
+ }
848
+
849
+ // 24. Latest version -- augur packages should be on the latest published version
850
+ if (installedAugur.length > 0) {
851
+ // Use augur-config as the reference (all packages share the same version)
852
+ const refPkg = installedAugur[0];
853
+ const refVersion = refPkg.version.replace(/^[\^~>=<\s]+/, "");
854
+
855
+ try {
856
+ const { execSync } = await import("node:child_process");
857
+ const latestVersion = execSync(
858
+ `npm view @simpleapps-com/augur-config version 2>/dev/null`,
859
+ { encoding: "utf-8" }
860
+ ).trim();
861
+
862
+ if (latestVersion && refVersion === latestVersion) {
863
+ pass(
864
+ "augur-version-latest",
865
+ "Augur packages on latest version",
866
+ latestVersion
867
+ );
868
+ } else if (latestVersion) {
869
+ fail(
870
+ "augur-version-latest",
871
+ "Augur packages should be on the latest version",
872
+ `installed: ${refVersion}, latest: ${latestVersion} -- run: pnpm update ${augurPackageNames.map((n) => JSON.stringify(n)).join(" ")}`
873
+ );
874
+ } else {
875
+ skip(
876
+ "augur-version-latest",
877
+ "Augur latest version check",
878
+ "Could not fetch latest version from npm"
879
+ );
880
+ }
881
+ } catch {
882
+ skip(
883
+ "augur-version-latest",
884
+ "Augur latest version check",
885
+ "Could not fetch latest version from npm (offline or not published)"
886
+ );
887
+ }
888
+ } else {
889
+ skip("augur-version-latest", "Augur latest version check", "No augur packages found");
890
+ }
891
+ } else {
892
+ skip("augur-version-sync", "Augur package version sync", "No package.json");
893
+ skip("augur-version-latest", "Augur latest version check", "No package.json");
894
+ }
895
+
766
896
  // ── Output ───────────────────────────────────────────────────────────────────
767
897
 
768
898
  const ICONS = {
@@ -786,7 +916,7 @@ const groups = {
786
916
  "site-hooks",
787
917
  "ssr-options",
788
918
  ],
789
- "Config Alignment": ["tsconfig", "eslint", "eslint-deprecated", "prettier", "tailwind", "icons"],
919
+ "Config Alignment": ["tsconfig", "eslint", "eslint-deprecated", "prettier", "knip", "tailwind", "icons"],
790
920
  "Next.js Config": [
791
921
  "next-external",
792
922
  "next-ioredis",
@@ -796,6 +926,7 @@ const groups = {
796
926
  ],
797
927
  "Testing & Quality": ["contract-tests", "quality-script", "pre-commit"],
798
928
  "Proxy Adoption": ["proxy-local-hooks", "proxy-server-query", "api-version"],
929
+ "Package Versions": ["augur-version-sync", "augur-version-latest"],
799
930
  "Patterns": ["no-wrapper", "auth", "image-loader"],
800
931
  };
801
932
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simpleapps-com/augur-config",
3
- "version": "2.2.8",
3
+ "version": "2.2.10",
4
4
  "description": "Shared tooling configuration presets for Augur ecommerce sites",
5
5
  "license": "MIT",
6
6
  "repository": {