Skip to content

Commit dd13498

Browse files
committed
add package.json generator
1 parent 48b3c17 commit dd13498

File tree

4 files changed

+43
-7
lines changed

4 files changed

+43
-7
lines changed

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@omer-x/next-openapi-interface-generator",
3-
"version": "0.1.5",
3+
"version": "0.2.0",
44
"description": "OpenAPI interface generator for Next.js",
55
"keywords": [
66
"next",

src/core/configs.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import fs from "node:fs";
2+
import path from "node:path";
3+
4+
function filterDependencies(deps: Record<string, string> | undefined, whiteList: string[]) {
5+
const entries = Object.entries(deps ?? {}).filter(([name]) => whiteList.includes(name));
6+
return entries.length ? Object.fromEntries(entries) : undefined;
7+
}
8+
9+
export default function generateConfigs(outputFolder: string, dependencies: string[]) {
10+
const filePath = path.resolve(process.cwd(), "package.json");
11+
const content = fs.readFileSync(filePath, "utf-8");
12+
const data = JSON.parse(content);
13+
return JSON.stringify({
14+
...data,
15+
files: [
16+
`${outputFolder}/`,
17+
],
18+
exports: {
19+
".": {
20+
import: `./${outputFolder}/index.js`,
21+
types: `./${outputFolder}/index.d.ts`,
22+
},
23+
"./*": `./${outputFolder}/schemas/*.ts`,
24+
},
25+
scripts: {
26+
test: "echo \"Error: no test specified\" && exit 1",
27+
},
28+
dependencies: filterDependencies(data.dependencies, dependencies),
29+
devDependencies: filterDependencies(data.devDependencies, dependencies),
30+
optionalDependencies: filterDependencies(data.optionalDependencies, dependencies),
31+
}, null, 2);
32+
}

src/index.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import path from "node:path";
44
import getAppName from "./core/app";
55
import getArgument from "./core/arguments";
66
import capitalize from "./core/capitalize";
7+
import generateConfigs from "./core/configs";
78
import createFile from "./core/file";
89
import generateDeclaration from "./core/renderers/declaration";
910
import generateDocumentation from "./core/renderers/documentation";
@@ -28,7 +29,7 @@ import generateSwaggerJson from "./core/swagger";
2829
const properties = resolveProperties(schema.properties, schema.required ?? []);
2930
const importedSchemas = resolveSchemasFromProps(schema.properties);
3031
const content = generateSchema(schemaName, properties, importedSchemas);
31-
await createFile(content, `${schemaName}.ts`, outputDir, "schemas");
32+
await createFile(content, `${schemaName}.ts`, outputDir, "dist/schemas");
3233
}
3334
}
3435
}
@@ -41,11 +42,14 @@ import generateSwaggerJson from "./core/swagger";
4142
const resolvedPaths = resolveOperations(data.paths);
4243

4344
const content = generateInterface(envName, resolvedPaths);
44-
await createFile(content, "index.js", outputDir);
45+
await createFile(content, "index.js", outputDir, "dist");
4546

4647
const declaration = generateDeclaration(data.paths);
47-
await createFile(declaration, "index.d.ts", outputDir);
48+
await createFile(declaration, "index.d.ts", outputDir, "dist");
4849

4950
const doc = generateDocumentation(serviceName, packageName, envName, data.paths);
50-
await createFile(doc, "README.md", process.cwd());
51+
await createFile(doc, "README.md", outputDir);
52+
53+
const configs = generateConfigs("dist", []);
54+
await createFile(configs + "\n", "package.json", outputDir);
5155
})();

0 commit comments

Comments
 (0)