@workos/oagen 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +12 -0
- package/LICENSE.txt +21 -0
- package/README.md +197 -0
- package/dist/chunk-CIX5NOBF.js +263 -0
- package/dist/chunk-IJ5E5AE7.js +1040 -0
- package/dist/chunk-P5XUDUGY.js +1748 -0
- package/dist/cli/index.js +5603 -0
- package/dist/compat/index.d.ts +195 -0
- package/dist/compat/index.js +4453 -0
- package/dist/index.d.ts +300 -0
- package/dist/index.js +1733 -0
- package/dist/scripts/smoke/baseline.js +1751 -0
- package/dist/scripts/smoke/sdk-test.js +93 -0
- package/dist/smoke.js +1963 -0
- package/dist/types-B5t9O9Wm.d.ts +367 -0
- package/dist/verify/index.d.ts +76 -0
- package/dist/verify/index.js +336 -0
- package/docs/advanced/index.md +11 -0
- package/docs/advanced/oagen-ignore.md +144 -0
- package/docs/agents/architecture.md +53 -0
- package/docs/agents/emitters.md +69 -0
- package/docs/agents/testing.md +60 -0
- package/docs/architecture/dependency-layers.md +75 -0
- package/docs/architecture/emitter-contract.md +160 -0
- package/docs/architecture/extractor-contract.md +227 -0
- package/docs/architecture/ir-types.md +275 -0
- package/docs/architecture/non-additive-changes.md +76 -0
- package/docs/architecture/pipeline.md +110 -0
- package/docs/architecture/workflows.md +215 -0
- package/docs/cli.md +156 -0
- package/docs/contributor/index.md +10 -0
- package/docs/contributor/public-api.md +59 -0
- package/docs/contributor/versioning.md +48 -0
- package/docs/core/index.md +12 -0
- package/docs/core/minimal-emitter.md +134 -0
- package/docs/core/quickstart.md +142 -0
- package/docs/diagrams/generate-sdk-workflow.md +50 -0
- package/docs/index.md +40 -0
- package/examples/reference-emitter/README.md +41 -0
- package/examples/reference-emitter/oagen.config.ts +7 -0
- package/examples/reference-emitter/spec/github-subset.yml +400 -0
- package/examples/reference-emitter/src/emitter.ts +52 -0
- package/examples/reference-emitter/src/generators/client.ts +37 -0
- package/examples/reference-emitter/src/generators/config.ts +19 -0
- package/examples/reference-emitter/src/generators/enums.ts +16 -0
- package/examples/reference-emitter/src/generators/errors.ts +39 -0
- package/examples/reference-emitter/src/generators/models.ts +29 -0
- package/examples/reference-emitter/src/generators/resources.ts +60 -0
- package/examples/reference-emitter/src/generators/tests.ts +7 -0
- package/examples/reference-emitter/src/index.ts +1 -0
- package/examples/reference-emitter/src/naming.ts +21 -0
- package/examples/reference-emitter/src/type-mapper.ts +39 -0
- package/examples/reference-emitter/tsconfig.json +19 -0
- package/package.json +102 -0
- package/skills/generate-emitter/SKILL.md +393 -0
- package/skills/generate-emitter/references/common-pitfalls.md +23 -0
- package/skills/generate-emitter/references/generator-guide.md +201 -0
- package/skills/generate-emitter/references/project-scaffold.md +138 -0
- package/skills/generate-extractor/SKILL.md +200 -0
- package/skills/generate-sdk/SKILL.md +155 -0
- package/skills/generate-smoke-test/SKILL.md +185 -0
- package/skills/integrate/SKILL.md +108 -0
- package/skills/verify-compat/SKILL.md +151 -0
- package/skills/verify-smoke-test/SKILL.md +176 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
// scripts/smoke/sdk-test.ts
|
|
2
|
+
import { existsSync, writeFileSync } from "fs";
|
|
3
|
+
import { execFileSync } from "child_process";
|
|
4
|
+
import { resolve, dirname } from "path";
|
|
5
|
+
import { fileURLToPath } from "url";
|
|
6
|
+
var __filename = fileURLToPath(import.meta.url);
|
|
7
|
+
var __dirname = dirname(__filename);
|
|
8
|
+
var args = process.argv.slice(2);
|
|
9
|
+
var langIdx = args.indexOf("--lang");
|
|
10
|
+
var forwardedArgs = [...args];
|
|
11
|
+
if (langIdx === -1 || !args[langIdx + 1]) {
|
|
12
|
+
console.error("--lang is required (e.g. --lang node, --lang ruby)");
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
var lang = args[langIdx + 1];
|
|
16
|
+
forwardedArgs.splice(langIdx, 2);
|
|
17
|
+
var rawResultsIdx = forwardedArgs.indexOf("--raw-results");
|
|
18
|
+
var rawResultsPath = "smoke-results-raw.json";
|
|
19
|
+
if (rawResultsIdx !== -1 && forwardedArgs[rawResultsIdx + 1]) {
|
|
20
|
+
rawResultsPath = forwardedArgs[rawResultsIdx + 1];
|
|
21
|
+
forwardedArgs.splice(rawResultsIdx, 2);
|
|
22
|
+
}
|
|
23
|
+
var sdkScript = resolve(__dirname, `sdk-${lang}.ts`);
|
|
24
|
+
if (!existsSync(sdkScript)) {
|
|
25
|
+
console.error(`No smoke runner found for language "${lang}" (expected ${sdkScript})`);
|
|
26
|
+
console.error(`Available runners:`);
|
|
27
|
+
const { readdirSync } = await import("fs");
|
|
28
|
+
for (const f of readdirSync(__dirname)) {
|
|
29
|
+
const match = f.match(/^sdk-(.+)\.ts$/);
|
|
30
|
+
if (match && match[1] !== "test") {
|
|
31
|
+
console.error(` --lang ${match[1]}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
var sdkResultsPath = `smoke-results-sdk-${lang}.json`;
|
|
37
|
+
var diffArgs = ["--raw", rawResultsPath, "--sdk", sdkResultsPath];
|
|
38
|
+
var sdkPathIdx = forwardedArgs.indexOf("--sdk-path");
|
|
39
|
+
var sdkPathValue = sdkPathIdx !== -1 && forwardedArgs[sdkPathIdx + 1] ? forwardedArgs[sdkPathIdx + 1] : void 0;
|
|
40
|
+
if (sdkPathValue) {
|
|
41
|
+
const tsconfigPath = resolve(sdkPathValue, "tsconfig.json");
|
|
42
|
+
if (existsSync(tsconfigPath)) {
|
|
43
|
+
console.log(`
|
|
44
|
+
${"=".repeat(60)}`);
|
|
45
|
+
console.log(`Type-checking SDK at ${sdkPathValue}`);
|
|
46
|
+
console.log("=".repeat(60));
|
|
47
|
+
try {
|
|
48
|
+
execFileSync("npx", ["tsc", "--noEmit", "--project", sdkPathValue], {
|
|
49
|
+
stdio: "pipe",
|
|
50
|
+
env: process.env
|
|
51
|
+
});
|
|
52
|
+
console.log(" Type check passed");
|
|
53
|
+
} catch (err) {
|
|
54
|
+
const output = err.stdout?.toString() ?? "";
|
|
55
|
+
const findings = parseTscOutput(output);
|
|
56
|
+
writeFileSync("smoke-compile-errors.json", JSON.stringify(findings, null, 2));
|
|
57
|
+
console.error(` Type check failed (${findings.length} errors). See smoke-compile-errors.json`);
|
|
58
|
+
process.exit(2);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
var steps = [
|
|
63
|
+
[sdkScript, forwardedArgs],
|
|
64
|
+
[resolve(__dirname, "diff.ts"), diffArgs]
|
|
65
|
+
];
|
|
66
|
+
for (const [script, scriptArgs] of steps) {
|
|
67
|
+
console.log(`
|
|
68
|
+
${"=".repeat(60)}`);
|
|
69
|
+
console.log(`Running ${script}`);
|
|
70
|
+
console.log("=".repeat(60));
|
|
71
|
+
try {
|
|
72
|
+
execFileSync("npx", ["tsx", script, ...scriptArgs], {
|
|
73
|
+
stdio: "inherit",
|
|
74
|
+
env: process.env
|
|
75
|
+
});
|
|
76
|
+
} catch {
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
function parseTscOutput(output) {
|
|
81
|
+
const errors = [];
|
|
82
|
+
const re = /^(.+)\((\d+),\d+\): error (TS\d+): (.+)$/gm;
|
|
83
|
+
let match;
|
|
84
|
+
while ((match = re.exec(output)) !== null) {
|
|
85
|
+
errors.push({
|
|
86
|
+
file: match[1],
|
|
87
|
+
line: Number(match[2]),
|
|
88
|
+
code: match[3],
|
|
89
|
+
message: match[4]
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
return errors;
|
|
93
|
+
}
|