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/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEtD,MAAM,IAAI,GAAG;;;;;;;;;;;;CAYZ,CAAC,IAAI,EAAE,CAAC;AAET,KAAK,UAAU,IAAI;IAClB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAExB,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACxB,MAAM,OAAO,EAAE,CAAC;QAChB,OAAO;IACR,CAAC;IAED,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEzC,IAAI,OAAO,EAAE,CAAC;YACb,QAAQ,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACP,WAAW,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;QACD,OAAO;IACR,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,OAAO;IACrB,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE3B,qBAAqB;IACrB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACrD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACP,EAAE,CAAC,aAAa,CACf,UAAU,EACV;;;;;;;;;;;;;;;;;;;CAmBF,CACE,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACvC,CAAC;IAED,qBAAqB;IACrB,MAAM,IAAI,GAAG,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAChD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC;QAChC,CAAC;IACF,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACpC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACpB,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
@@ -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"}
@@ -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"}