@embrace-ai/infra-api-schema-sync 1.0.9 → 1.0.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/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.0.11](https://github.com/Embrace-AI/infra-api-schema-sync/compare/v1.0.10...v1.0.11) (2026-05-01)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * skip dangling symlinks in validate findFiles walk ([#124](https://github.com/Embrace-AI/infra-api-schema-sync/issues/124)) ([f89c24d](https://github.com/Embrace-AI/infra-api-schema-sync/commit/f89c24deb97c7c364b39c628d8f7f22ae9a22f6d))
9
+
10
+ ## [1.0.10](https://github.com/Embrace-AI/infra-api-schema-sync/compare/v1.0.9...v1.0.10) (2026-04-21)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **deps:** update dependency @graphql-inspector/cli to v6 ([#52](https://github.com/Embrace-AI/infra-api-schema-sync/issues/52)) ([2f67bb2](https://github.com/Embrace-AI/infra-api-schema-sync/commit/2f67bb2b76c571695ad422ee334688adf463b3b7))
16
+ * **deps:** update dependency @scaldwell77/aws-signed-fetch to v5 ([#82](https://github.com/Embrace-AI/infra-api-schema-sync/issues/82)) ([36c05c5](https://github.com/Embrace-AI/infra-api-schema-sync/commit/36c05c536bb7c3623d1563341d5179e46a268472))
17
+ * **deps:** update dependency globals to v17 ([#64](https://github.com/Embrace-AI/infra-api-schema-sync/issues/64)) ([ed46784](https://github.com/Embrace-AI/infra-api-schema-sync/commit/ed46784a84cb601097338e09ec55194b78cbeb2e))
18
+ * **deps:** update graphqlcodegenerator monorepo ([#54](https://github.com/Embrace-AI/infra-api-schema-sync/issues/54)) ([c3145fa](https://github.com/Embrace-AI/infra-api-schema-sync/commit/c3145fa944899617cde7a3e08ee2f0117de5d3a1))
19
+
3
20
  ## [1.0.9](https://github.com/Embrace-AI/infra-api-schema-sync/compare/v1.0.8...v1.0.9) (2025-10-22)
4
21
 
5
22
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.js"],"names":[],"mappings":"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"}
@@ -3,5 +3,6 @@ export function validateSchema({ schema, queries, output }: {
3
3
  queries: any;
4
4
  output: any;
5
5
  }): Promise<void>;
6
+ export function findFiles(pattern: any): any[];
6
7
  export default validateSchema;
7
8
  //# sourceMappingURL=validate-schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate-schema.d.ts","sourceRoot":"","sources":["../../src/validate-schema.js"],"names":[],"mappings":"AAMO;;;;kBAwGN"}
1
+ {"version":3,"file":"validate-schema.d.ts","sourceRoot":"","sources":["../../src/validate-schema.js"],"names":[],"mappings":"AAMO;;;;kBAwGN;AAEM,+CA0DN"}
@@ -80,7 +80,7 @@ export const validateSchema = async ({ schema, queries, output }) => {
80
80
  process.exit(1);
81
81
  }
82
82
  };
83
- const findFiles = (pattern) => {
83
+ export const findFiles = (pattern) => {
84
84
  if (fs.existsSync(pattern) && fs.statSync(pattern).isFile()) {
85
85
  return [pattern];
86
86
  }
@@ -89,10 +89,24 @@ const findFiles = (pattern) => {
89
89
  const dir = pattern.includes("/") ? path.dirname(pattern) : ".";
90
90
  const searchDir = fs.existsSync(dir) ? dir : ".";
91
91
  const searchDirectory = (dirPath, recursive = false) => {
92
- const entries = fs.readdirSync(dirPath);
92
+ let entries;
93
+ try {
94
+ entries = fs.readdirSync(dirPath);
95
+ }
96
+ catch (err) {
97
+ console.info(`ℹ️ Skipping unreadable directory ${dirPath}: ${err.message}`);
98
+ return;
99
+ }
93
100
  for (const entry of entries) {
94
101
  const fullPath = path.join(dirPath, entry);
95
- const stat = fs.statSync(fullPath);
102
+ let stat;
103
+ try {
104
+ stat = fs.statSync(fullPath);
105
+ }
106
+ catch (err) {
107
+ console.info(`ℹ️ Skipping ${fullPath}: ${err.message}`);
108
+ continue;
109
+ }
96
110
  if (stat.isDirectory() && recursive) {
97
111
  searchDirectory(fullPath, true);
98
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validate-schema.js","sourceRoot":"","sources":["../../src/validate-schema.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate-schema.js","sourceRoot":"","sources":["../../src/validate-schema.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;IAClE,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC;QAGtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAC;QACtD,CAAC;QAGD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAG7B,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEtD,MAAM,aAAa,GAAG,WAAW,CAAC,aAAa,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;QAG3E,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAEtC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,8CAA8C,OAAO,EAAE,CAAC,CAAC;QACvE,CAAC;QAGD,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;YACvC,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC,CAAC;QAEJ,OAAO,CAAC,GAAG,CACT,iBAAiB,OAAO,CAAC,MAAM,kCAAkC,CAClE,CAAC;QAGF,MAAM,gBAAgB,GAAG,QAAQ,CAAC,aAAa,EAAE,OAAO,EAAE;YACxD,gBAAgB,EAAE,KAAK;YACvB,eAAe,EAAE,IAAI;YACrB,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;QAGH,MAAM,gBAAgB,GAAG,EAAE,CAAC;QAE5B,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;YAEnC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBAC/B,gBAAgB,CAAC,IAAI,CAAC;oBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,QAAQ,EAAE;wBACR,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;wBACrB,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC;wBACrC,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC;qBAC1C;oBACD,SAAS,EAAE,YAAY;iBACxB,CAAC,CAAC;YACL,CAAC;YAGD,KAAK,MAAM,UAAU,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBACxC,gBAAgB,CAAC,IAAI,CAAC;oBACpB,OAAO,EAAE,eAAe,UAAU,CAAC,OAAO,EAAE;oBAC5C,QAAQ,EAAE;wBACR,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;wBACrB,IAAI,EAAE,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC;wBAC1C,MAAM,EAAE,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC;qBAC/C;oBACD,SAAS,EAAE,YAAY;iBACxB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAGD,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAG5E,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC;QAC3C,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,EAAE,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,iCAAiC,UAAU,iBAAiB,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,EAAE,CAAC,CAAC;YAG5C,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;gBACxD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,IAAI,cAAc,CAAC;gBACpD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBACjC,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAAE,CAAC,CAAC;YAEP,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;gBACnD,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,KAAK,WAAW,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,EAAE;IAInC,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QAE5D,OAAO,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IAGD,MAAM,KAAK,GAAG,EAAE,CAAC;IAEjB,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAE1B,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAChE,MAAM,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAEjD,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,SAAS,GAAG,KAAK,EAAE,EAAE;YACrD,IAAI,OAAO,CAAC;YACZ,IAAI,CAAC;gBACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACpC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CACV,qCAAqC,OAAO,KAAK,GAAG,CAAC,OAAO,EAAE,CAC/D,CAAC;gBACF,OAAO;YACT,CAAC;YAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC3C,IAAI,IAAI,CAAC;gBACT,IAAI,CAAC;oBAGH,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC/B,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,IAAI,CAAC,gBAAgB,QAAQ,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;oBACzD,SAAS;gBACX,CAAC;gBAED,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,SAAS,EAAE,CAAC;oBACpC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAClC,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBACvD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QAEN,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAGF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=validate-schema.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-schema.test.d.ts","sourceRoot":"","sources":["../../src/validate-schema.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,63 @@
1
+ import fs from "fs";
2
+ import os from "os";
3
+ import path from "path";
4
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
5
+ import { findFiles } from "./validate-schema.js";
6
+ describe("findFiles", () => {
7
+ let tmpDir;
8
+ let originalCwd;
9
+ beforeEach(() => {
10
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "validate-schema-test-"));
11
+ originalCwd = process.cwd();
12
+ process.chdir(tmpDir);
13
+ });
14
+ afterEach(() => {
15
+ process.chdir(originalCwd);
16
+ fs.rmSync(tmpDir, { recursive: true, force: true });
17
+ });
18
+ it("returns matching .graphql files in the tree", () => {
19
+ fs.mkdirSync("src/a", { recursive: true });
20
+ fs.writeFileSync("src/a/query.graphql", "{ hello }");
21
+ fs.writeFileSync("src/other.graphql", "{ world }");
22
+ fs.writeFileSync("src/a/skip.txt", "ignored");
23
+ const files = findFiles("src/**/*.graphql").sort();
24
+ expect(files).toEqual([
25
+ path.join("src", "a", "query.graphql"),
26
+ path.join("src", "other.graphql"),
27
+ ].sort());
28
+ });
29
+ it("skips dangling symlinks instead of crashing", () => {
30
+ fs.mkdirSync("src/pkg", { recursive: true });
31
+ fs.writeFileSync("src/pkg/query.graphql", "{ hello }");
32
+ fs.symlinkSync("does-not-exist", "src/pkg/dangling");
33
+ expect(() => findFiles("src/**/*.graphql")).not.toThrow();
34
+ const files = findFiles("src/**/*.graphql");
35
+ expect(files).toContain(path.join("src", "pkg", "query.graphql"));
36
+ });
37
+ it("skips unreadable directories instead of crashing", () => {
38
+ fs.mkdirSync("src/ok", { recursive: true });
39
+ fs.writeFileSync("src/ok/query.graphql", "{ hello }");
40
+ fs.mkdirSync("src/blocked", { recursive: true });
41
+ const blockedPath = path.join("src", "blocked");
42
+ const originalReaddirSync = fs.readdirSync;
43
+ const readdirSpy = vi
44
+ .spyOn(fs, "readdirSync")
45
+ .mockImplementation((dirPath, options) => {
46
+ if (dirPath === blockedPath) {
47
+ const err = new Error("EACCES: permission denied");
48
+ err.code = "EACCES";
49
+ throw err;
50
+ }
51
+ return originalReaddirSync(dirPath, options);
52
+ });
53
+ try {
54
+ expect(() => findFiles("src/**/*.graphql")).not.toThrow();
55
+ const files = findFiles("src/**/*.graphql");
56
+ expect(files).toContain(path.join("src", "ok", "query.graphql"));
57
+ }
58
+ finally {
59
+ readdirSpy.mockRestore();
60
+ }
61
+ });
62
+ });
63
+ //# sourceMappingURL=validate-schema.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-schema.test.js","sourceRoot":"","sources":["../../src/validate-schema.test.js"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@embrace-ai/infra-api-schema-sync",
3
- "version": "1.0.9",
3
+ "version": "1.0.11",
4
4
  "bin": {
5
5
  "api-tool": "./dist/src/index.js"
6
6
  },
@@ -22,34 +22,34 @@
22
22
  "keywords": [],
23
23
  "type": "module",
24
24
  "dependencies": {
25
- "@graphql-codegen/cli": "^5.0.7",
26
- "@graphql-codegen/typescript": "^4.1.6",
27
- "@graphql-inspector/cli": "^5.0.8",
28
- "@scaldwell77/aws-signed-fetch": "^4.0.0",
25
+ "@graphql-codegen/cli": "^6.0.0",
26
+ "@graphql-codegen/typescript": "^5.0.0",
27
+ "@graphql-inspector/cli": "^6.0.0",
28
+ "@scaldwell77/aws-signed-fetch": "^5.0.0",
29
29
  "commander": "^14.0.0",
30
30
  "fs-extra": "^11.3.0",
31
- "globals": "^16.2.0",
31
+ "globals": "^17.0.0",
32
32
  "graphql": "^16.11.0",
33
33
  "yaml": "^2.8.0"
34
34
  },
35
35
  "devDependencies": {
36
- "@eslint/compat": "1.3.0",
37
- "@graphql-inspector/core": "6.2.1",
38
- "@trivago/prettier-plugin-sort-imports": "5.2.2",
39
- "@tsconfig/node20": "20.1.6",
40
- "@types/node": "22.15.32",
41
- "@typescript-eslint/eslint-plugin": "8.34.1",
42
- "@typescript-eslint/parser": "8.34.1",
43
- "@vitest/coverage-v8": "3.2.4",
44
- "eslint": "9.29.0",
45
- "eslint-config-prettier": "10.1.5",
36
+ "@eslint/compat": "2.0.5",
37
+ "@graphql-inspector/core": "7.1.2",
38
+ "@trivago/prettier-plugin-sort-imports": "6.0.2",
39
+ "@tsconfig/node22": "22.0.5",
40
+ "@types/node": "24.12.2",
41
+ "@typescript-eslint/eslint-plugin": "8.58.2",
42
+ "@typescript-eslint/parser": "8.58.2",
43
+ "@vitest/coverage-v8": "4.1.4",
44
+ "eslint": "9.39.4",
45
+ "eslint-config-prettier": "10.1.8",
46
46
  "eslint-plugin-prefer-arrow": "1.2.3",
47
- "eslint-plugin-prettier": "5.5.0",
48
- "eslint-plugin-unused-imports": "4.1.4",
49
- "prettier": "3.5.3",
50
- "ts-pattern": "5.7.1",
51
- "typescript": "5.8.3",
52
- "vitest": "3.2.4"
47
+ "eslint-plugin-prettier": "5.5.5",
48
+ "eslint-plugin-unused-imports": "4.4.1",
49
+ "prettier": "3.8.3",
50
+ "ts-pattern": "5.9.0",
51
+ "typescript": "6.0.3",
52
+ "vitest": "4.1.4"
53
53
  },
54
54
  "scripts": {
55
55
  "clean": "rm -rf dist",
package/src/index.js CHANGED
@@ -52,9 +52,8 @@ program
52
52
  "Repository name (auto-detected from git if not provided)",
53
53
  )
54
54
  .action(async (opts) => {
55
- const { default: generateSchemaUrl } = await import(
56
- "./generate-schema-url.js"
57
- );
55
+ const { default: generateSchemaUrl } =
56
+ await import("./generate-schema-url.js");
58
57
  return generateSchemaUrl(opts);
59
58
  });
60
59
 
@@ -68,9 +67,8 @@ program
68
67
  .requiredOption("--schema-file <file>", "Path to the new schema file")
69
68
  .requiredOption("--output <file>", "JSON output file with update results")
70
69
  .action(async (opts) => {
71
- const { default: updateLocalSchema } = await import(
72
- "./update-local-schema.js"
73
- );
70
+ const { default: updateLocalSchema } =
71
+ await import("./update-local-schema.js");
74
72
  return updateLocalSchema(opts);
75
73
  });
76
74
 
@@ -110,7 +110,7 @@ export const validateSchema = async ({ schema, queries, output }) => {
110
110
  }
111
111
  };
112
112
 
113
- const findFiles = (pattern) => {
113
+ export const findFiles = (pattern) => {
114
114
  // Simple glob-like pattern matching for GraphQL files
115
115
  // This handles basic patterns like "*.graphql", "**/*.graphql", etc.
116
116
 
@@ -128,11 +128,27 @@ const findFiles = (pattern) => {
128
128
  const searchDir = fs.existsSync(dir) ? dir : ".";
129
129
 
130
130
  const searchDirectory = (dirPath, recursive = false) => {
131
- const entries = fs.readdirSync(dirPath);
131
+ let entries;
132
+ try {
133
+ entries = fs.readdirSync(dirPath);
134
+ } catch (err) {
135
+ console.info(
136
+ `ℹ️ Skipping unreadable directory ${dirPath}: ${err.message}`,
137
+ );
138
+ return;
139
+ }
132
140
 
133
141
  for (const entry of entries) {
134
142
  const fullPath = path.join(dirPath, entry);
135
- const stat = fs.statSync(fullPath);
143
+ let stat;
144
+ try {
145
+ // statSync follows symlinks, so dangling links throw ENOENT —
146
+ // skip them rather than aborting the whole walk.
147
+ stat = fs.statSync(fullPath);
148
+ } catch (err) {
149
+ console.info(`ℹ️ Skipping ${fullPath}: ${err.message}`);
150
+ continue;
151
+ }
136
152
 
137
153
  if (stat.isDirectory() && recursive) {
138
154
  searchDirectory(fullPath, true);
@@ -0,0 +1,78 @@
1
+ import fs from "fs";
2
+ import os from "os";
3
+ import path from "path";
4
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
5
+
6
+ import { findFiles } from "./validate-schema.js";
7
+
8
+ describe("findFiles", () => {
9
+ let tmpDir;
10
+ let originalCwd;
11
+
12
+ beforeEach(() => {
13
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "validate-schema-test-"));
14
+ originalCwd = process.cwd();
15
+ process.chdir(tmpDir);
16
+ });
17
+
18
+ afterEach(() => {
19
+ process.chdir(originalCwd);
20
+ fs.rmSync(tmpDir, { recursive: true, force: true });
21
+ });
22
+
23
+ it("returns matching .graphql files in the tree", () => {
24
+ fs.mkdirSync("src/a", { recursive: true });
25
+ fs.writeFileSync("src/a/query.graphql", "{ hello }");
26
+ fs.writeFileSync("src/other.graphql", "{ world }");
27
+ fs.writeFileSync("src/a/skip.txt", "ignored");
28
+
29
+ const files = findFiles("src/**/*.graphql").sort();
30
+
31
+ expect(files).toEqual(
32
+ [
33
+ path.join("src", "a", "query.graphql"),
34
+ path.join("src", "other.graphql"),
35
+ ].sort(),
36
+ );
37
+ });
38
+
39
+ it("skips dangling symlinks instead of crashing", () => {
40
+ // Repro: packages with a tracked symlink to a gitignored codegen output
41
+ // dir leave a dangling symlink in fresh CI checkouts. The walk must not
42
+ // abort when it hits one.
43
+ fs.mkdirSync("src/pkg", { recursive: true });
44
+ fs.writeFileSync("src/pkg/query.graphql", "{ hello }");
45
+ fs.symlinkSync("does-not-exist", "src/pkg/dangling");
46
+
47
+ expect(() => findFiles("src/**/*.graphql")).not.toThrow();
48
+ const files = findFiles("src/**/*.graphql");
49
+ expect(files).toContain(path.join("src", "pkg", "query.graphql"));
50
+ });
51
+
52
+ it("skips unreadable directories instead of crashing", () => {
53
+ fs.mkdirSync("src/ok", { recursive: true });
54
+ fs.writeFileSync("src/ok/query.graphql", "{ hello }");
55
+ fs.mkdirSync("src/blocked", { recursive: true });
56
+
57
+ const blockedPath = path.join("src", "blocked");
58
+ const originalReaddirSync = fs.readdirSync;
59
+ const readdirSpy = vi
60
+ .spyOn(fs, "readdirSync")
61
+ .mockImplementation((dirPath, options) => {
62
+ if (dirPath === blockedPath) {
63
+ const err = new Error("EACCES: permission denied");
64
+ err.code = "EACCES";
65
+ throw err;
66
+ }
67
+ return originalReaddirSync(dirPath, options);
68
+ });
69
+
70
+ try {
71
+ expect(() => findFiles("src/**/*.graphql")).not.toThrow();
72
+ const files = findFiles("src/**/*.graphql");
73
+ expect(files).toContain(path.join("src", "ok", "query.graphql"));
74
+ } finally {
75
+ readdirSpy.mockRestore();
76
+ }
77
+ });
78
+ });