@embrace-ai/infra-api-schema-sync 1.0.5 → 1.0.7
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 +14 -0
- package/dist/src/fetch-schema.d.ts.map +1 -1
- package/dist/src/fetch-schema.js +0 -2
- package/dist/src/fetch-schema.js.map +1 -1
- package/dist/src/generate-schema-url.d.ts +1 -0
- package/dist/src/generate-schema-url.d.ts.map +1 -1
- package/dist/src/generate-schema-url.js +10 -0
- package/dist/src/generate-schema-url.js.map +1 -1
- package/dist/src/index.js +10 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/update-local-schema.d.ts +12 -0
- package/dist/src/update-local-schema.d.ts.map +1 -0
- package/dist/src/update-local-schema.js +144 -0
- package/dist/src/update-local-schema.js.map +1 -0
- package/dist/src/update-local-schema.test.d.ts +2 -0
- package/dist/src/update-local-schema.test.d.ts.map +1 -0
- package/dist/src/update-local-schema.test.js +143 -0
- package/dist/src/update-local-schema.test.js.map +1 -0
- package/package.json +1 -2
- package/src/fetch-schema.js +1 -3
- package/src/generate-schema-url.js +28 -0
- package/src/index.js +16 -0
- package/src/update-local-schema.js +216 -0
- package/src/update-local-schema.test.js +233 -0
- package/templates/workflows/graphql-schema-validate.yml +145 -67
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.0.7](https://github.com/Embrace-AI/infra-api-schema-sync/compare/v1.0.6...v1.0.7) (2025-10-15)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* **workflow:** add cli to update repo files, add test to veriify behavior ([#24](https://github.com/Embrace-AI/infra-api-schema-sync/issues/24)) ([27e9e53](https://github.com/Embrace-AI/infra-api-schema-sync/commit/27e9e539b6f79bfc7172ca97cc4725872818d4c0))
|
|
9
|
+
|
|
10
|
+
## [1.0.6](https://github.com/Embrace-AI/infra-api-schema-sync/compare/v1.0.5...v1.0.6) (2025-10-14)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* **fetch:** remove explicit region passing ([#22](https://github.com/Embrace-AI/infra-api-schema-sync/issues/22)) ([6103289](https://github.com/Embrace-AI/infra-api-schema-sync/commit/61032896230c2edd746eda57a92d6a8aa9ee8a6f))
|
|
16
|
+
|
|
3
17
|
## [1.0.5](https://github.com/Embrace-AI/infra-api-schema-sync/compare/v1.0.4...v1.0.5) (2025-10-14)
|
|
4
18
|
|
|
5
19
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-schema.d.ts","sourceRoot":"","sources":["../../src/fetch-schema.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetch-schema.d.ts","sourceRoot":"","sources":["../../src/fetch-schema.js"],"names":[],"mappings":"AAKO;;;kBAqCN"}
|
package/dist/src/fetch-schema.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { AWS_REGION } from "@embrace-ai/common-sst-app-utils";
|
|
2
1
|
import { createSignedFetch } from "@scaldwell77/aws-signed-fetch";
|
|
3
2
|
import fs from "fs";
|
|
4
3
|
import fse from "fs-extra";
|
|
@@ -8,7 +7,6 @@ export const fetchSchema = async ({ url, output }) => {
|
|
|
8
7
|
console.log(`🔄 Fetching GraphQL schema from ${url}...`);
|
|
9
8
|
const signedFetch = createSignedFetch({
|
|
10
9
|
service: "execute-api",
|
|
11
|
-
awsRegion: AWS_REGION,
|
|
12
10
|
});
|
|
13
11
|
const response = await signedFetch(url, {
|
|
14
12
|
method: "GET",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-schema.js","sourceRoot":"","sources":["../../src/fetch-schema.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"fetch-schema.js","sourceRoot":"","sources":["../../src/fetch-schema.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;IACnD,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,mCAAmC,GAAG,KAAK,CAAC,CAAC;QAIzD,MAAM,WAAW,GAAG,iBAAiB,CAAC;YACpC,OAAO,EAAE,aAAa;SACvB,CAAC,CAAC;QAGH,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE;YACtC,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,MAAM,EAAE,iCAAiC;aAC1C;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACrE,CAAC;QAGD,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAGxC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAG7B,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAE5C,OAAO,CAAC,GAAG,CAAC,kCAAkC,MAAM,EAAE,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAGF,eAAe,WAAW,CAAC"}
|
|
@@ -3,6 +3,7 @@ export function buildSchemaUrl({ stage, service, repo }: {
|
|
|
3
3
|
service: string;
|
|
4
4
|
repo: string;
|
|
5
5
|
}): string;
|
|
6
|
+
export function extractServiceFromUrl(url: string): string | null;
|
|
6
7
|
export function generateSchemaUrl(opts: any): string;
|
|
7
8
|
export default generateSchemaUrl;
|
|
8
9
|
//# sourceMappingURL=generate-schema-url.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-schema-url.d.ts","sourceRoot":"","sources":["../../src/generate-schema-url.js"],"names":[],"mappings":"AAYO,yDALJ;IAAwB,KAAK,EAArB,MAAM;IACU,OAAO,EAAvB,MAAM;IACU,IAAI,EAApB,MAAM;CACd,GAAU,MAAM,CAwBlB;
|
|
1
|
+
{"version":3,"file":"generate-schema-url.d.ts","sourceRoot":"","sources":["../../src/generate-schema-url.js"],"names":[],"mappings":"AAYO,yDALJ;IAAwB,KAAK,EAArB,MAAM;IACU,OAAO,EAAvB,MAAM;IACU,IAAI,EAApB,MAAM;CACd,GAAU,MAAM,CAwBlB;AAuGM,2CANI,MAAM,GACJ,MAAM,GAAC,IAAI,CAuBvB;AAKM,qDA2CN"}
|
|
@@ -65,6 +65,16 @@ const extractServiceName = (repo) => {
|
|
|
65
65
|
}
|
|
66
66
|
return serviceName;
|
|
67
67
|
};
|
|
68
|
+
export const extractServiceFromUrl = (url) => {
|
|
69
|
+
const serviceMatch = url.match(/api\.([^.]+)\.(?:pr-\d+\.)?services\./);
|
|
70
|
+
if (serviceMatch) {
|
|
71
|
+
return serviceMatch[1];
|
|
72
|
+
}
|
|
73
|
+
if (url.includes("/v2/graphql/schema")) {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
return null;
|
|
77
|
+
};
|
|
68
78
|
export const generateSchemaUrl = (opts) => {
|
|
69
79
|
try {
|
|
70
80
|
const { stage, service, repo } = opts;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-schema-url.js","sourceRoot":"","sources":["../../src/generate-schema-url.js"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generate-schema-url.js","sourceRoot":"","sources":["../../src/generate-schema-url.js"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -43,6 +43,16 @@ program
|
|
|
43
43
|
const { default: generateSchemaUrl } = await import("./generate-schema-url.js");
|
|
44
44
|
return generateSchemaUrl(opts);
|
|
45
45
|
});
|
|
46
|
+
program
|
|
47
|
+
.command("update-local-schema")
|
|
48
|
+
.description("Find and update local schema files based on schema URL")
|
|
49
|
+
.requiredOption("--schema-url <url>", "Schema URL to extract service name from")
|
|
50
|
+
.requiredOption("--schema-file <file>", "Path to the new schema file")
|
|
51
|
+
.requiredOption("--output <file>", "JSON output file with update results")
|
|
52
|
+
.action(async (opts) => {
|
|
53
|
+
const { default: updateLocalSchema } = await import("./update-local-schema.js");
|
|
54
|
+
return updateLocalSchema(opts);
|
|
55
|
+
});
|
|
46
56
|
program
|
|
47
57
|
.command("dispatch-update")
|
|
48
58
|
.description("Dispatch schema update events to organization repositories")
|
package/dist/src/index.js.map
CHANGED
|
@@ -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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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export function updateLocalSchema({ schemaUrl, schemaFile, output }: {
|
|
2
|
+
schemaUrl: string;
|
|
3
|
+
schemaFile: string;
|
|
4
|
+
output: string;
|
|
5
|
+
}): Promise<{
|
|
6
|
+
serviceName: string;
|
|
7
|
+
updatedFiles: string[];
|
|
8
|
+
hasChanges: boolean;
|
|
9
|
+
message: string;
|
|
10
|
+
}>;
|
|
11
|
+
export default updateLocalSchema;
|
|
12
|
+
//# sourceMappingURL=update-local-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-local-schema.d.ts","sourceRoot":"","sources":["../../src/update-local-schema.js"],"names":[],"mappings":"AA8GO,qEAJJ;IAAwB,SAAS,EAAzB,MAAM;IACU,UAAU,EAA1B,MAAM;IACU,MAAM,EAAtB,MAAM;CAChB;;;;;GAuGA"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { execSync } from "child_process";
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import fse from "fs-extra";
|
|
4
|
+
import path from "path";
|
|
5
|
+
import { extractServiceFromUrl } from "./generate-schema-url.js";
|
|
6
|
+
const findSchemaFiles = (serviceName, rootDir = process.cwd()) => {
|
|
7
|
+
if (!serviceName) {
|
|
8
|
+
console.log("⚠️ No service name provided, skipping schema file search");
|
|
9
|
+
return [];
|
|
10
|
+
}
|
|
11
|
+
console.log(`🔍 Searching for schema files in directories matching: ${serviceName}`);
|
|
12
|
+
try {
|
|
13
|
+
const findCommand = `find . -type d -name "*${serviceName}*" -exec find {} -maxdepth 10 -name "schema.graphql" \\; 2>/dev/null || true`;
|
|
14
|
+
const output = execSync(findCommand, {
|
|
15
|
+
cwd: rootDir,
|
|
16
|
+
encoding: "utf8",
|
|
17
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
18
|
+
});
|
|
19
|
+
const files = output
|
|
20
|
+
.split("\n")
|
|
21
|
+
.map((line) => line.trim())
|
|
22
|
+
.filter((line) => line.length > 0)
|
|
23
|
+
.map((line) => line.replace(/^\.\//, ""))
|
|
24
|
+
.filter((file) => !file.includes("node_modules") &&
|
|
25
|
+
!file.includes("/dist/") &&
|
|
26
|
+
!file.includes("/.git/") &&
|
|
27
|
+
!file.includes("/build/") &&
|
|
28
|
+
!file.includes("/coverage/"));
|
|
29
|
+
const uniqueFiles = [...new Set(files)];
|
|
30
|
+
if (uniqueFiles.length > 0) {
|
|
31
|
+
console.log(`✅ Found ${uniqueFiles.length} schema file(s):`);
|
|
32
|
+
uniqueFiles.forEach((file) => console.log(` - ${file}`));
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
console.log(`ℹ️ No schema files found in directories matching: ${serviceName}`);
|
|
36
|
+
}
|
|
37
|
+
return uniqueFiles;
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
console.warn(`⚠️ Error searching for schema files: ${error.message}`);
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
const updateSchemaFile = (filePath, newContent) => {
|
|
45
|
+
try {
|
|
46
|
+
let currentContent = "";
|
|
47
|
+
if (fs.existsSync(filePath)) {
|
|
48
|
+
currentContent = fs.readFileSync(filePath, "utf8");
|
|
49
|
+
}
|
|
50
|
+
if (currentContent.trim() === newContent.trim()) {
|
|
51
|
+
console.log(` ℹ️ No changes needed for: ${filePath}`);
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
const dir = path.dirname(filePath);
|
|
55
|
+
fse.ensureDirSync(dir);
|
|
56
|
+
fs.writeFileSync(filePath, newContent, "utf8");
|
|
57
|
+
console.log(` ✅ Updated: ${filePath}`);
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
console.error(` ❌ Failed to update ${filePath}: ${error.message}`);
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
export const updateLocalSchema = async ({ schemaUrl, schemaFile, output }) => {
|
|
66
|
+
try {
|
|
67
|
+
console.log("🔧 Starting local schema update process...");
|
|
68
|
+
console.log(`📡 Schema URL: ${schemaUrl}`);
|
|
69
|
+
console.log(`📄 New schema file: ${schemaFile}`);
|
|
70
|
+
const serviceName = extractServiceFromUrl(schemaUrl);
|
|
71
|
+
if (!serviceName) {
|
|
72
|
+
console.log("ℹ️ This is the main embrace API - no service-specific schema files to update");
|
|
73
|
+
const result = {
|
|
74
|
+
serviceName: "embrace",
|
|
75
|
+
updatedFiles: [],
|
|
76
|
+
hasChanges: false,
|
|
77
|
+
message: "Main embrace API - no service-specific schema files to update",
|
|
78
|
+
};
|
|
79
|
+
if (output) {
|
|
80
|
+
fse.ensureDirSync(path.dirname(output));
|
|
81
|
+
fs.writeFileSync(output, JSON.stringify(result, null, 2), "utf8");
|
|
82
|
+
console.log(`📊 Result written to: ${output}`);
|
|
83
|
+
}
|
|
84
|
+
return result;
|
|
85
|
+
}
|
|
86
|
+
console.log(`🎯 Service name: ${serviceName}`);
|
|
87
|
+
if (!fs.existsSync(schemaFile)) {
|
|
88
|
+
throw new Error(`Schema file not found: ${schemaFile}`);
|
|
89
|
+
}
|
|
90
|
+
const newSchemaContent = fs.readFileSync(schemaFile, "utf8");
|
|
91
|
+
const schemaFiles = findSchemaFiles(serviceName);
|
|
92
|
+
if (schemaFiles.length === 0) {
|
|
93
|
+
console.log("⚠️ No schema files found to update");
|
|
94
|
+
const result = {
|
|
95
|
+
serviceName,
|
|
96
|
+
updatedFiles: [],
|
|
97
|
+
hasChanges: false,
|
|
98
|
+
message: `No schema files found in directories matching: ${serviceName}`,
|
|
99
|
+
};
|
|
100
|
+
if (output) {
|
|
101
|
+
fse.ensureDirSync(path.dirname(output));
|
|
102
|
+
fs.writeFileSync(output, JSON.stringify(result, null, 2), "utf8");
|
|
103
|
+
console.log(`📊 Result written to: ${output}`);
|
|
104
|
+
}
|
|
105
|
+
return result;
|
|
106
|
+
}
|
|
107
|
+
console.log(`\n📝 Updating schema files...`);
|
|
108
|
+
const updatedFiles = [];
|
|
109
|
+
for (const file of schemaFiles) {
|
|
110
|
+
const wasUpdated = updateSchemaFile(file, newSchemaContent);
|
|
111
|
+
if (wasUpdated) {
|
|
112
|
+
updatedFiles.push(file);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const hasChanges = updatedFiles.length > 0;
|
|
116
|
+
console.log("");
|
|
117
|
+
if (hasChanges) {
|
|
118
|
+
console.log(`✅ Successfully updated ${updatedFiles.length} file(s)`);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
console.log(`ℹ️ All schema files are already up to date`);
|
|
122
|
+
}
|
|
123
|
+
const result = {
|
|
124
|
+
serviceName,
|
|
125
|
+
updatedFiles,
|
|
126
|
+
hasChanges,
|
|
127
|
+
message: hasChanges
|
|
128
|
+
? `Updated ${updatedFiles.length} schema file(s)`
|
|
129
|
+
: "All schema files are already up to date",
|
|
130
|
+
};
|
|
131
|
+
if (output) {
|
|
132
|
+
fse.ensureDirSync(path.dirname(output));
|
|
133
|
+
fs.writeFileSync(output, JSON.stringify(result, null, 2), "utf8");
|
|
134
|
+
console.log(`📊 Result written to: ${output}`);
|
|
135
|
+
}
|
|
136
|
+
return result;
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
console.error(`❌ Failed to update local schema: ${error.message}`);
|
|
140
|
+
throw error;
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
export default updateLocalSchema;
|
|
144
|
+
//# sourceMappingURL=update-local-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-local-schema.js","sourceRoot":"","sources":["../../src/update-local-schema.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-local-schema.test.d.ts","sourceRoot":"","sources":["../../src/update-local-schema.test.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import fse from "fs-extra";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
5
|
+
import { extractServiceFromUrl } from "./generate-schema-url.js";
|
|
6
|
+
import { updateLocalSchema } from "./update-local-schema.js";
|
|
7
|
+
describe("extractServiceFromUrl", () => {
|
|
8
|
+
it("should extract service name from dev service URL", () => {
|
|
9
|
+
const url = "https://api.integrations-plugins.services.dev.embrace.ai/graphql/schema";
|
|
10
|
+
expect(extractServiceFromUrl(url)).toBe("integrations-plugins");
|
|
11
|
+
});
|
|
12
|
+
it("should extract service name from prod service URL", () => {
|
|
13
|
+
const url = "https://api.integrations-plugins.services.embrace.ai/graphql/schema";
|
|
14
|
+
expect(extractServiceFromUrl(url)).toBe("integrations-plugins");
|
|
15
|
+
});
|
|
16
|
+
it("should extract service name from PR service URL", () => {
|
|
17
|
+
const url = "https://api.integrations-plugins.pr-123.services.dev.embrace.ai/graphql/schema";
|
|
18
|
+
expect(extractServiceFromUrl(url)).toBe("integrations-plugins");
|
|
19
|
+
});
|
|
20
|
+
it("should return null for main embrace API dev URL", () => {
|
|
21
|
+
const url = "https://api.dev.embrace.ai/v2/graphql/schema";
|
|
22
|
+
expect(extractServiceFromUrl(url)).toBe(null);
|
|
23
|
+
});
|
|
24
|
+
it("should return null for main embrace API PR URL", () => {
|
|
25
|
+
const url = "https://api.pr-123.dev.embrace.ai/v2/graphql/schema";
|
|
26
|
+
expect(extractServiceFromUrl(url)).toBe(null);
|
|
27
|
+
});
|
|
28
|
+
it("should handle multi-part service names", () => {
|
|
29
|
+
const url = "https://api.orgs-core.services.dev.embrace.ai/graphql/schema";
|
|
30
|
+
expect(extractServiceFromUrl(url)).toBe("orgs-core");
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
describe("updateLocalSchema", () => {
|
|
34
|
+
const testDir = path.join(process.cwd(), "test-temp-schema-update");
|
|
35
|
+
const schemaContent = `
|
|
36
|
+
type Query {
|
|
37
|
+
hello: String
|
|
38
|
+
}
|
|
39
|
+
`.trim();
|
|
40
|
+
const updatedSchemaContent = `
|
|
41
|
+
type Query {
|
|
42
|
+
hello: String
|
|
43
|
+
world: String
|
|
44
|
+
}
|
|
45
|
+
`.trim();
|
|
46
|
+
beforeEach(() => {
|
|
47
|
+
fse.ensureDirSync(testDir);
|
|
48
|
+
});
|
|
49
|
+
afterEach(() => {
|
|
50
|
+
if (fs.existsSync(testDir)) {
|
|
51
|
+
fse.removeSync(testDir);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
it("should find and update schema files in matching directories", async () => {
|
|
55
|
+
const serviceName = "integrations-plugins";
|
|
56
|
+
const schemaDir = path.join(testDir, "packages/core/src/services", serviceName);
|
|
57
|
+
const schemaFile = path.join(schemaDir, "schema.graphql");
|
|
58
|
+
fse.ensureDirSync(schemaDir);
|
|
59
|
+
fs.writeFileSync(schemaFile, schemaContent, "utf8");
|
|
60
|
+
const newSchemaFile = path.join(testDir, "new-schema.graphql");
|
|
61
|
+
fs.writeFileSync(newSchemaFile, updatedSchemaContent, "utf8");
|
|
62
|
+
const outputFile = path.join(testDir, "result.json");
|
|
63
|
+
const result = await updateLocalSchema({
|
|
64
|
+
schemaUrl: `https://api.${serviceName}.services.dev.embrace.ai/graphql/schema`,
|
|
65
|
+
schemaFile: newSchemaFile,
|
|
66
|
+
output: outputFile,
|
|
67
|
+
});
|
|
68
|
+
expect(result.serviceName).toBe(serviceName);
|
|
69
|
+
expect(result.hasChanges).toBe(true);
|
|
70
|
+
expect(result.updatedFiles.length).toBeGreaterThan(0);
|
|
71
|
+
const updatedContent = fs.readFileSync(schemaFile, "utf8");
|
|
72
|
+
expect(updatedContent.trim()).toBe(updatedSchemaContent);
|
|
73
|
+
expect(fs.existsSync(outputFile)).toBe(true);
|
|
74
|
+
const outputData = JSON.parse(fs.readFileSync(outputFile, "utf8"));
|
|
75
|
+
expect(outputData.hasChanges).toBe(true);
|
|
76
|
+
expect(fs.existsSync(schemaFile)).toBe(true);
|
|
77
|
+
expect(fs.existsSync(newSchemaFile)).toBe(true);
|
|
78
|
+
});
|
|
79
|
+
it("should detect when no changes are needed", async () => {
|
|
80
|
+
const serviceName = "integrations-plugins";
|
|
81
|
+
const schemaDir = path.join(testDir, "packages/core/src/services", serviceName);
|
|
82
|
+
const schemaFile = path.join(schemaDir, "schema.graphql");
|
|
83
|
+
fse.ensureDirSync(schemaDir);
|
|
84
|
+
fs.writeFileSync(schemaFile, schemaContent, "utf8");
|
|
85
|
+
const newSchemaFile = path.join(testDir, "new-schema.graphql");
|
|
86
|
+
fs.writeFileSync(newSchemaFile, schemaContent, "utf8");
|
|
87
|
+
const outputFile = path.join(testDir, "result.json");
|
|
88
|
+
const result = await updateLocalSchema({
|
|
89
|
+
schemaUrl: `https://api.${serviceName}.services.dev.embrace.ai/graphql/schema`,
|
|
90
|
+
schemaFile: newSchemaFile,
|
|
91
|
+
output: outputFile,
|
|
92
|
+
});
|
|
93
|
+
expect(result.serviceName).toBe(serviceName);
|
|
94
|
+
expect(result.hasChanges).toBe(false);
|
|
95
|
+
expect(result.updatedFiles.length).toBe(0);
|
|
96
|
+
expect(fs.existsSync(schemaFile)).toBe(true);
|
|
97
|
+
expect(fs.existsSync(newSchemaFile)).toBe(true);
|
|
98
|
+
});
|
|
99
|
+
it("should handle main embrace API (no service name)", async () => {
|
|
100
|
+
const newSchemaFile = path.join(testDir, "new-schema.graphql");
|
|
101
|
+
fs.writeFileSync(newSchemaFile, schemaContent, "utf8");
|
|
102
|
+
const outputFile = path.join(testDir, "result.json");
|
|
103
|
+
const result = await updateLocalSchema({
|
|
104
|
+
schemaUrl: "https://api.dev.embrace.ai/v2/graphql/schema",
|
|
105
|
+
schemaFile: newSchemaFile,
|
|
106
|
+
output: outputFile,
|
|
107
|
+
});
|
|
108
|
+
expect(result.serviceName).toBe("embrace");
|
|
109
|
+
expect(result.hasChanges).toBe(false);
|
|
110
|
+
expect(result.updatedFiles.length).toBe(0);
|
|
111
|
+
expect(fs.existsSync(newSchemaFile)).toBe(true);
|
|
112
|
+
});
|
|
113
|
+
it("should handle multiple schema files in different directories", async () => {
|
|
114
|
+
const serviceName = "integrations-plugins";
|
|
115
|
+
const schemaDir1 = path.join(testDir, "packages/core/src/services", serviceName);
|
|
116
|
+
const schemaFile1 = path.join(schemaDir1, "schema.graphql");
|
|
117
|
+
const schemaDir2 = path.join(testDir, "apps", serviceName, "graphql");
|
|
118
|
+
const schemaFile2 = path.join(schemaDir2, "schema.graphql");
|
|
119
|
+
fse.ensureDirSync(schemaDir1);
|
|
120
|
+
fse.ensureDirSync(schemaDir2);
|
|
121
|
+
fs.writeFileSync(schemaFile1, schemaContent, "utf8");
|
|
122
|
+
fs.writeFileSync(schemaFile2, schemaContent, "utf8");
|
|
123
|
+
const newSchemaFile = path.join(testDir, "new-schema.graphql");
|
|
124
|
+
fs.writeFileSync(newSchemaFile, updatedSchemaContent, "utf8");
|
|
125
|
+
const outputFile = path.join(testDir, "result.json");
|
|
126
|
+
const result = await updateLocalSchema({
|
|
127
|
+
schemaUrl: `https://api.${serviceName}.services.dev.embrace.ai/graphql/schema`,
|
|
128
|
+
schemaFile: newSchemaFile,
|
|
129
|
+
output: outputFile,
|
|
130
|
+
});
|
|
131
|
+
expect(result.serviceName).toBe(serviceName);
|
|
132
|
+
expect(result.hasChanges).toBe(true);
|
|
133
|
+
expect(result.updatedFiles.length).toBeGreaterThanOrEqual(1);
|
|
134
|
+
const updatedContent1 = fs.readFileSync(schemaFile1, "utf8");
|
|
135
|
+
const updatedContent2 = fs.readFileSync(schemaFile2, "utf8");
|
|
136
|
+
expect(updatedContent1.trim()).toBe(updatedSchemaContent);
|
|
137
|
+
expect(updatedContent2.trim()).toBe(updatedSchemaContent);
|
|
138
|
+
expect(fs.existsSync(schemaFile1)).toBe(true);
|
|
139
|
+
expect(fs.existsSync(schemaFile2)).toBe(true);
|
|
140
|
+
expect(fs.existsSync(newSchemaFile)).toBe(true);
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
//# sourceMappingURL=update-local-schema.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-local-schema.test.js","sourceRoot":"","sources":["../../src/update-local-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.
|
|
3
|
+
"version": "1.0.7",
|
|
4
4
|
"bin": {
|
|
5
5
|
"api-tool": "./dist/src/index.js"
|
|
6
6
|
},
|
|
@@ -22,7 +22,6 @@
|
|
|
22
22
|
"keywords": [],
|
|
23
23
|
"type": "module",
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@embrace-ai/common-sst-app-utils": "^1.8.2",
|
|
26
25
|
"@graphql-codegen/cli": "^5.0.7",
|
|
27
26
|
"@graphql-codegen/typescript": "^4.1.6",
|
|
28
27
|
"@graphql-inspector/cli": "^5.0.8",
|
package/src/fetch-schema.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { AWS_REGION } from "@embrace-ai/common-sst-app-utils";
|
|
2
|
-
|
|
3
1
|
import { createSignedFetch } from "@scaldwell77/aws-signed-fetch";
|
|
4
2
|
import fs from "fs";
|
|
5
3
|
import fse from "fs-extra";
|
|
@@ -10,9 +8,9 @@ export const fetchSchema = async ({ url, output }) => {
|
|
|
10
8
|
console.log(`🔄 Fetching GraphQL schema from ${url}...`);
|
|
11
9
|
|
|
12
10
|
// Create AWS signed fetch for API Gateway authentication
|
|
11
|
+
// Region is automatically picked up from AWS_REGION environment variable
|
|
13
12
|
const signedFetch = createSignedFetch({
|
|
14
13
|
service: "execute-api",
|
|
15
|
-
awsRegion: AWS_REGION,
|
|
16
14
|
});
|
|
17
15
|
|
|
18
16
|
// Fetch schema SDL directly via GET
|
|
@@ -127,6 +127,34 @@ const extractServiceName = (repo) => {
|
|
|
127
127
|
return serviceName;
|
|
128
128
|
};
|
|
129
129
|
|
|
130
|
+
/**
|
|
131
|
+
* Extract service name from a schema URL (reverse of building URL)
|
|
132
|
+
* @param {string} url - Schema URL
|
|
133
|
+
* @returns {string|null} Service name or null if it's the main embrace API
|
|
134
|
+
* @example
|
|
135
|
+
* extractServiceFromUrl('https://api.integrations-plugins.services.dev.embrace.ai/graphql/schema')
|
|
136
|
+
* // returns 'integrations-plugins'
|
|
137
|
+
*/
|
|
138
|
+
export const extractServiceFromUrl = (url) => {
|
|
139
|
+
// Match patterns like:
|
|
140
|
+
// https://api.integrations-plugins.services.dev.embrace.ai/graphql/schema
|
|
141
|
+
// https://api.integrations-plugins.services.embrace.ai/graphql/schema
|
|
142
|
+
// https://api.integrations-plugins.pr-123.services.dev.embrace.ai/graphql/schema
|
|
143
|
+
const serviceMatch = url.match(/api\.([^.]+)\.(?:pr-\d+\.)?services\./);
|
|
144
|
+
if (serviceMatch) {
|
|
145
|
+
return serviceMatch[1]; // e.g., "integrations-plugins"
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// If it's the main embrace API, return null
|
|
149
|
+
// https://api.dev.embrace.ai/v2/graphql/schema
|
|
150
|
+
// https://api.pr-123.dev.embrace.ai/v2/graphql/schema
|
|
151
|
+
if (url.includes("/v2/graphql/schema")) {
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
return null;
|
|
156
|
+
};
|
|
157
|
+
|
|
130
158
|
/**
|
|
131
159
|
* CLI command handler
|
|
132
160
|
*/
|
package/src/index.js
CHANGED
|
@@ -58,6 +58,22 @@ program
|
|
|
58
58
|
return generateSchemaUrl(opts);
|
|
59
59
|
});
|
|
60
60
|
|
|
61
|
+
program
|
|
62
|
+
.command("update-local-schema")
|
|
63
|
+
.description("Find and update local schema files based on schema URL")
|
|
64
|
+
.requiredOption(
|
|
65
|
+
"--schema-url <url>",
|
|
66
|
+
"Schema URL to extract service name from",
|
|
67
|
+
)
|
|
68
|
+
.requiredOption("--schema-file <file>", "Path to the new schema file")
|
|
69
|
+
.requiredOption("--output <file>", "JSON output file with update results")
|
|
70
|
+
.action(async (opts) => {
|
|
71
|
+
const { default: updateLocalSchema } = await import(
|
|
72
|
+
"./update-local-schema.js"
|
|
73
|
+
);
|
|
74
|
+
return updateLocalSchema(opts);
|
|
75
|
+
});
|
|
76
|
+
|
|
61
77
|
program
|
|
62
78
|
.command("dispatch-update")
|
|
63
79
|
.description("Dispatch schema update events to organization repositories")
|