ertk 0.1.0
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/LICENSE +21 -0
- package/README.md +717 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +93 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +16 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +122 -0
- package/dist/config.js.map +1 -0
- package/dist/endpoint.d.ts +9 -0
- package/dist/endpoint.d.ts.map +1 -0
- package/dist/endpoint.js +15 -0
- package/dist/endpoint.js.map +1 -0
- package/dist/generate.d.ts +20 -0
- package/dist/generate.d.ts.map +1 -0
- package/dist/generate.js +653 -0
- package/dist/generate.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/next/index.d.ts +2 -0
- package/dist/next/index.d.ts.map +1 -0
- package/dist/next/index.js +2 -0
- package/dist/next/index.js.map +1 -0
- package/dist/next/route-handler.d.ts +82 -0
- package/dist/next/route-handler.d.ts.map +1 -0
- package/dist/next/route-handler.js +190 -0
- package/dist/next/route-handler.js.map +1 -0
- package/dist/types.d.ts +149 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/package.json +75 -0
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import { loadConfig, resolveConfig } from "./config.js";
|
|
4
|
+
import { runGenerate, runWatch } from "./generate.js";
|
|
5
|
+
const HELP = `
|
|
6
|
+
ertk — Easy RTK Query codegen
|
|
7
|
+
|
|
8
|
+
Usage:
|
|
9
|
+
ertk generate One-shot generation (skips if nothing changed)
|
|
10
|
+
ertk generate --watch Watch mode with incremental regeneration
|
|
11
|
+
ertk init Scaffold config file and directories
|
|
12
|
+
ertk --help Show this help message
|
|
13
|
+
|
|
14
|
+
Options:
|
|
15
|
+
--watch Watch for endpoint file changes and regenerate
|
|
16
|
+
--help Show help
|
|
17
|
+
`.trim();
|
|
18
|
+
async function main() {
|
|
19
|
+
const args = process.argv.slice(2);
|
|
20
|
+
const command = args[0];
|
|
21
|
+
if (!command || command === "--help" || command === "-h") {
|
|
22
|
+
console.log(HELP);
|
|
23
|
+
process.exit(0);
|
|
24
|
+
}
|
|
25
|
+
if (command === "init") {
|
|
26
|
+
await runInit();
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (command === "generate") {
|
|
30
|
+
const root = process.cwd();
|
|
31
|
+
const userConfig = await loadConfig(root);
|
|
32
|
+
const config = resolveConfig(root, userConfig);
|
|
33
|
+
const isWatch = args.includes("--watch");
|
|
34
|
+
if (isWatch) {
|
|
35
|
+
runWatch(config);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
runGenerate(config);
|
|
39
|
+
}
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
console.error(`Unknown command: ${command}`);
|
|
43
|
+
console.log(HELP);
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
async function runInit() {
|
|
47
|
+
const fs = await import("node:fs");
|
|
48
|
+
const root = process.cwd();
|
|
49
|
+
// Create config file
|
|
50
|
+
const configPath = path.join(root, "ertk.config.ts");
|
|
51
|
+
if (fs.existsSync(configPath)) {
|
|
52
|
+
console.log("ertk.config.ts already exists, skipping.");
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
fs.writeFileSync(configPath, `import { defineConfig } from "ertk";
|
|
56
|
+
|
|
57
|
+
export default defineConfig({
|
|
58
|
+
\t// Directory containing endpoint definition files
|
|
59
|
+
\tendpoints: "src/endpoints",
|
|
60
|
+
|
|
61
|
+
\t// Directory for generated output (api.ts, store.ts, invalidation.ts)
|
|
62
|
+
\tgenerated: "src/generated",
|
|
63
|
+
|
|
64
|
+
\t// Base URL for RTK Query fetchBaseQuery
|
|
65
|
+
\tbaseUrl: "/api",
|
|
66
|
+
|
|
67
|
+
\t// Route generation (remove to skip route generation for client-only projects)
|
|
68
|
+
\troutes: {
|
|
69
|
+
\t\tdir: "src/app/api",
|
|
70
|
+
\t\thandlerModule: "ertk/next",
|
|
71
|
+
\t\tignoredRoutes: [],
|
|
72
|
+
\t},
|
|
73
|
+
});
|
|
74
|
+
`);
|
|
75
|
+
console.log("Created ertk.config.ts");
|
|
76
|
+
}
|
|
77
|
+
// Create directories
|
|
78
|
+
const dirs = ["src/endpoints", "src/generated"];
|
|
79
|
+
for (const dir of dirs) {
|
|
80
|
+
const fullPath = path.join(root, dir);
|
|
81
|
+
if (!fs.existsSync(fullPath)) {
|
|
82
|
+
fs.mkdirSync(fullPath, { recursive: true });
|
|
83
|
+
console.log(`Created ${dir}/`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
console.log("\nDone! Define your first endpoint in src/endpoints/ and run:");
|
|
87
|
+
console.log(" npx ertk generate");
|
|
88
|
+
}
|
|
89
|
+
main().catch((err) => {
|
|
90
|
+
console.error("ERTK Error:", err);
|
|
91
|
+
process.exit(1);
|
|
92
|
+
});
|
|
93
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ErtkConfig, ResolvedConfig } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Helper for defining an ERTK config with type checking.
|
|
4
|
+
*/
|
|
5
|
+
export declare function defineConfig(config: ErtkConfig): ErtkConfig;
|
|
6
|
+
/**
|
|
7
|
+
* Load the ERTK config file from the project root.
|
|
8
|
+
* Searches for ertk.config.ts, ertk.config.mts, ertk.config.js, ertk.config.mjs.
|
|
9
|
+
*/
|
|
10
|
+
export declare function loadConfig(root: string): Promise<ErtkConfig>;
|
|
11
|
+
/**
|
|
12
|
+
* Resolve user config + defaults into a fully resolved config
|
|
13
|
+
* with absolute paths and all defaults applied.
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveConfig(root: string, config: ErtkConfig): ResolvedConfig;
|
|
16
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAa7D;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAE3D;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CA+BlE;AA0CD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,cAAc,CA6B9E"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
const DEFAULT_CRUD_FILENAMES = [
|
|
4
|
+
"get",
|
|
5
|
+
"list",
|
|
6
|
+
"create",
|
|
7
|
+
"update",
|
|
8
|
+
"delete",
|
|
9
|
+
"send",
|
|
10
|
+
"remove",
|
|
11
|
+
"cancel",
|
|
12
|
+
];
|
|
13
|
+
/**
|
|
14
|
+
* Helper for defining an ERTK config with type checking.
|
|
15
|
+
*/
|
|
16
|
+
export function defineConfig(config) {
|
|
17
|
+
return config;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Load the ERTK config file from the project root.
|
|
21
|
+
* Searches for ertk.config.ts, ertk.config.mts, ertk.config.js, ertk.config.mjs.
|
|
22
|
+
*/
|
|
23
|
+
export async function loadConfig(root) {
|
|
24
|
+
const candidates = [
|
|
25
|
+
"ertk.config.ts",
|
|
26
|
+
"ertk.config.mts",
|
|
27
|
+
"ertk.config.js",
|
|
28
|
+
"ertk.config.mjs",
|
|
29
|
+
];
|
|
30
|
+
for (const filename of candidates) {
|
|
31
|
+
const configPath = path.join(root, filename);
|
|
32
|
+
if (fs.existsSync(configPath)) {
|
|
33
|
+
try {
|
|
34
|
+
const { createJiti } = await import("jiti");
|
|
35
|
+
const jiti = createJiti(import.meta.url, {
|
|
36
|
+
interopDefault: true,
|
|
37
|
+
});
|
|
38
|
+
const mod = await jiti.import(configPath);
|
|
39
|
+
const config = mod.default ??
|
|
40
|
+
mod;
|
|
41
|
+
return config;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// If jiti fails, try native dynamic import (works for .mjs/.js)
|
|
45
|
+
const mod = await import(configPath);
|
|
46
|
+
return mod.default ?? mod;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// No config file found — use defaults
|
|
51
|
+
return {};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Auto-detect the path alias from tsconfig.json.
|
|
55
|
+
* Looks for a paths entry like "@app/*": ["./src/*"] and extracts "@app".
|
|
56
|
+
*/
|
|
57
|
+
function detectPathAlias(root) {
|
|
58
|
+
const tsconfigPath = path.join(root, "tsconfig.json");
|
|
59
|
+
if (!fs.existsSync(tsconfigPath)) {
|
|
60
|
+
return { alias: "@app", aliasRoot: path.join(root, "src") };
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
const raw = fs.readFileSync(tsconfigPath, "utf-8");
|
|
64
|
+
// Strip comments (// and /* */) for JSON parsing
|
|
65
|
+
const stripped = raw
|
|
66
|
+
.replace(/\/\/.*$/gm, "")
|
|
67
|
+
.replace(/\/\*[\s\S]*?\*\//g, "");
|
|
68
|
+
const tsconfig = JSON.parse(stripped);
|
|
69
|
+
const paths = tsconfig.compilerOptions?.paths;
|
|
70
|
+
if (paths) {
|
|
71
|
+
for (const [pattern, targets] of Object.entries(paths)) {
|
|
72
|
+
// Match patterns like "@app/*" → ["./src/*"]
|
|
73
|
+
const aliasMatch = pattern.match(/^(@[\w-]+\/?\*?)$/);
|
|
74
|
+
if (aliasMatch && Array.isArray(targets) && targets.length > 0) {
|
|
75
|
+
const alias = pattern.replace("/*", "").replace("*", "");
|
|
76
|
+
const targetPath = targets[0]
|
|
77
|
+
.replace("/*", "")
|
|
78
|
+
.replace("*", "");
|
|
79
|
+
const aliasRoot = path.resolve(root, targetPath);
|
|
80
|
+
return { alias, aliasRoot };
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
// Fall through to defaults
|
|
87
|
+
}
|
|
88
|
+
return { alias: "@app", aliasRoot: path.join(root, "src") };
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Resolve user config + defaults into a fully resolved config
|
|
92
|
+
* with absolute paths and all defaults applied.
|
|
93
|
+
*/
|
|
94
|
+
export function resolveConfig(root, config) {
|
|
95
|
+
const { alias, aliasRoot } = config.pathAlias
|
|
96
|
+
? {
|
|
97
|
+
alias: config.pathAlias,
|
|
98
|
+
aliasRoot: path.join(root, "src"),
|
|
99
|
+
}
|
|
100
|
+
: detectPathAlias(root);
|
|
101
|
+
const endpointsDir = path.resolve(root, config.endpoints ?? "src/endpoints");
|
|
102
|
+
const generatedDir = path.resolve(root, config.generated ?? "src/generated");
|
|
103
|
+
return {
|
|
104
|
+
root,
|
|
105
|
+
endpointsDir,
|
|
106
|
+
generatedDir,
|
|
107
|
+
manifestPath: path.join(generatedDir, ".ertk-manifest.json"),
|
|
108
|
+
pathAlias: alias,
|
|
109
|
+
aliasRoot,
|
|
110
|
+
baseUrl: config.baseUrl ?? "/api",
|
|
111
|
+
baseQuery: config.baseQuery ?? null,
|
|
112
|
+
crudFilenames: new Set(config.crudFilenames ?? DEFAULT_CRUD_FILENAMES),
|
|
113
|
+
routes: config.routes
|
|
114
|
+
? {
|
|
115
|
+
dir: path.resolve(root, config.routes.dir),
|
|
116
|
+
handlerModule: config.routes.handlerModule ?? "ertk/next",
|
|
117
|
+
ignoredRoutes: new Set(config.routes.ignoredRoutes ?? []),
|
|
118
|
+
}
|
|
119
|
+
: null,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { EndpointDefinition } from "./types.js";
|
|
2
|
+
export declare const endpoint: {
|
|
3
|
+
get: <TResponse, TArgs = void>(config: Omit<EndpointDefinition<TResponse, TArgs>, "method">) => EndpointDefinition<TResponse, TArgs>;
|
|
4
|
+
post: <TResponse, TArgs = void>(config: Omit<EndpointDefinition<TResponse, TArgs>, "method">) => EndpointDefinition<TResponse, TArgs>;
|
|
5
|
+
put: <TResponse, TArgs = void>(config: Omit<EndpointDefinition<TResponse, TArgs>, "method">) => EndpointDefinition<TResponse, TArgs>;
|
|
6
|
+
patch: <TResponse, TArgs = void>(config: Omit<EndpointDefinition<TResponse, TArgs>, "method">) => EndpointDefinition<TResponse, TArgs>;
|
|
7
|
+
delete: <TResponse, TArgs = void>(config: Omit<EndpointDefinition<TResponse, TArgs>, "method">) => EndpointDefinition<TResponse, TArgs>;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=endpoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAYrD,eAAO,MAAM,QAAQ;UATZ,SAAS,EAAE,KAAK,iBACf,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,KAC1D,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC;WAF/B,SAAS,EAAE,KAAK,iBACf,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,KAC1D,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC;UAF/B,SAAS,EAAE,KAAK,iBACf,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,KAC1D,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC;YAF/B,SAAS,EAAE,KAAK,iBACf,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,KAC1D,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC;aAF/B,SAAS,EAAE,KAAK,iBACf,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,KAC1D,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC;CAavC,CAAC"}
|
package/dist/endpoint.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
function createFactory(method) {
|
|
2
|
+
return (config) => ({
|
|
3
|
+
...config,
|
|
4
|
+
method,
|
|
5
|
+
protected: config.protected ?? true,
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
export const endpoint = {
|
|
9
|
+
get: createFactory("get"),
|
|
10
|
+
post: createFactory("post"),
|
|
11
|
+
put: createFactory("put"),
|
|
12
|
+
patch: createFactory("patch"),
|
|
13
|
+
delete: createFactory("delete"),
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=endpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":"AAEA,SAAS,aAAa,CAAC,MAAoC;IAC1D,OAAO,CACN,MAA4D,EACrB,EAAE,CAAC,CAAC;QAC3C,GAAG,MAAM;QACT,MAAM;QACN,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI;KACnC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG;IACvB,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC;IACzB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC;IAC3B,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC;IACzB,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC;IAC7B,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC;CAC/B,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ERTK Codegen Engine
|
|
3
|
+
*
|
|
4
|
+
* Reads endpoint definition files and generates:
|
|
5
|
+
* - api.ts (RTK Query API + hooks)
|
|
6
|
+
* - store.ts (Redux store config)
|
|
7
|
+
* - invalidation.ts (cache invalidation helpers)
|
|
8
|
+
* - route.ts files (Next.js route handlers) — if routes config is present
|
|
9
|
+
*/
|
|
10
|
+
import type { ResolvedConfig } from "./types.js";
|
|
11
|
+
/**
|
|
12
|
+
* Run a one-shot generation. Skips if nothing changed (manifest comparison).
|
|
13
|
+
*/
|
|
14
|
+
export declare function runGenerate(config: ResolvedConfig): void;
|
|
15
|
+
/**
|
|
16
|
+
* Run generation in watch mode. Does an initial full build, then
|
|
17
|
+
* watches for changes and incrementally regenerates.
|
|
18
|
+
*/
|
|
19
|
+
export declare function runWatch(config: ResolvedConfig): void;
|
|
20
|
+
//# sourceMappingURL=generate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA8xBjD;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CA2BxD;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAiDrD"}
|