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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { endpoint } from "./endpoint.js";
2
+ export { defineConfig } from "./config.js";
3
+ export type { EndpointDefinition, HandlerContext, DefaultUser, ValidationSchema, TagType, TagDescription, SingleOptimistic, MultiOptimistic, ErtkConfig, ErtkRoutesConfig, } from "./types.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,YAAY,EACX,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,gBAAgB,GAChB,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ // Core
2
+ export { endpoint } from "./endpoint.js";
3
+ export { defineConfig } from "./config.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO;AACP,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { configureHandler, createRouteHandler, type ErtkAuthAdapter, type ErtkErrorHandler, type ConfigureHandlerOptions, } from "./route-handler.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/next/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,GAC5B,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { configureHandler, createRouteHandler, } from "./route-handler.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/next/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,gBAAgB,EAChB,kBAAkB,GAIlB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * ERTK Next.js Route Handler
3
+ *
4
+ * Generic createRouteHandler that bridges EndpointDefinition to
5
+ * Next.js App Router route handlers. Decoupled from any specific
6
+ * auth or database implementation.
7
+ */
8
+ import type { EndpointDefinition } from "../types.js";
9
+ /**
10
+ * Auth adapter interface. Consumers implement this to provide
11
+ * user resolution for protected endpoints.
12
+ */
13
+ export interface ErtkAuthAdapter<TUser extends {
14
+ id: string;
15
+ } = {
16
+ id: string;
17
+ [key: string]: unknown;
18
+ }> {
19
+ /**
20
+ * Resolve the authenticated user from a request.
21
+ * Return null if the user is not authenticated.
22
+ */
23
+ getUser: (req: Request) => Promise<TUser | null>;
24
+ }
25
+ /**
26
+ * Error handler interface. Consumers can provide custom error
27
+ * handling logic (e.g., for ORM-specific errors).
28
+ */
29
+ export interface ErtkErrorHandler {
30
+ (error: unknown): Response | null;
31
+ }
32
+ /**
33
+ * Options for configuring the route handler factory.
34
+ */
35
+ export interface ConfigureHandlerOptions {
36
+ /** Auth adapter for resolving users on protected endpoints */
37
+ auth?: ErtkAuthAdapter;
38
+ /** Custom error handlers, processed in order. First non-null response wins. */
39
+ errorHandlers?: ErtkErrorHandler[];
40
+ }
41
+ /**
42
+ * Create a configured route handler factory. Call this once with your
43
+ * auth adapter and error handlers, then use the returned function
44
+ * to create individual route handlers.
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * // src/lib/ertk-handler.ts
49
+ * import { configureHandler } from "ertk/next";
50
+ *
51
+ * export const createRouteHandler = configureHandler({
52
+ * auth: {
53
+ * getUser: async (req) => {
54
+ * const session = await getServerSession(authOptions);
55
+ * if (!session?.user?.email) return null;
56
+ * return await db.user.findUnique({ where: { email: session.user.email } });
57
+ * },
58
+ * },
59
+ * errorHandlers: [
60
+ * (error) => {
61
+ * if (error instanceof Prisma.PrismaClientKnownRequestError) {
62
+ * if (error.code === "P2025") return errorResponse("Not found", 404);
63
+ * }
64
+ * return null;
65
+ * },
66
+ * ],
67
+ * });
68
+ * ```
69
+ */
70
+ export declare function configureHandler(options?: ConfigureHandlerOptions): (def: EndpointDefinition<any, any>) => (req: Request, ctx?: {
71
+ params: Promise<Record<string, string>>;
72
+ }) => Promise<Response>;
73
+ /**
74
+ * Default createRouteHandler with no auth or custom error handling.
75
+ * Suitable for unprotected endpoints or quick prototyping.
76
+ *
77
+ * For protected endpoints, use `configureHandler()` with an auth adapter.
78
+ */
79
+ export declare const createRouteHandler: (def: EndpointDefinition<any, any>) => (req: Request, ctx?: {
80
+ params: Promise<Record<string, string>>;
81
+ }) => Promise<Response>;
82
+ //# sourceMappingURL=route-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-handler.d.ts","sourceRoot":"","sources":["../../src/next/route-handler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAItD;;;GAGG;AACH,MAAM,WAAW,eAAe,CAC/B,KAAK,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE;IAErE;;;OAGG;IACH,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;CACjD;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAChC,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC,8DAA8D;IAC9D,IAAI,CAAC,EAAE,eAAe,CAAC;IAEvB,+EAA+E;IAC/E,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACnC;AAmGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,uBAA4B,IAEpE,KAAK,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,MAGhC,KAAK,OAAO,EACZ,MAAM;IAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAAE,KAC/C,OAAO,CAAC,QAAQ,CAAC,CAwFrB;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,QArGxB,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,MAGhC,KAAK,OAAO,EACZ,MAAM;IAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAAE,KAC/C,OAAO,CAAC,QAAQ,CAgG+B,CAAC"}
@@ -0,0 +1,190 @@
1
+ /**
2
+ * ERTK Next.js Route Handler
3
+ *
4
+ * Generic createRouteHandler that bridges EndpointDefinition to
5
+ * Next.js App Router route handlers. Decoupled from any specific
6
+ * auth or database implementation.
7
+ */
8
+ // ─── Validation Error ─────────────────────────────────────────
9
+ class ValidationError extends Error {
10
+ issues;
11
+ constructor(message, issues) {
12
+ super(message);
13
+ this.name = "ValidationError";
14
+ this.issues = issues;
15
+ }
16
+ }
17
+ // ─── Request Parsing ──────────────────────────────────────────
18
+ const QUERY_METHODS = new Set(["GET", "DELETE", "HEAD", "OPTIONS"]);
19
+ async function parseAndValidateRequest(req, schema) {
20
+ const method = req.method.toUpperCase();
21
+ const isQueryMethod = QUERY_METHODS.has(method);
22
+ if (isQueryMethod) {
23
+ if (!schema)
24
+ return { query: undefined };
25
+ const url = new URL(req.url);
26
+ const params = {};
27
+ url.searchParams.forEach((value, key) => {
28
+ const numValue = Number(value);
29
+ params[key] = Number.isNaN(numValue) ? value : numValue;
30
+ });
31
+ try {
32
+ const data = schema.parse(params);
33
+ return { query: data };
34
+ }
35
+ catch (err) {
36
+ throw toValidationError(err);
37
+ }
38
+ }
39
+ else {
40
+ if (!schema)
41
+ return { body: undefined };
42
+ let body;
43
+ try {
44
+ body = await req.json();
45
+ }
46
+ catch {
47
+ throw new ValidationError("Invalid JSON in request body");
48
+ }
49
+ try {
50
+ const data = schema.parse(body);
51
+ return { body: data };
52
+ }
53
+ catch (err) {
54
+ throw toValidationError(err);
55
+ }
56
+ }
57
+ }
58
+ function toValidationError(err) {
59
+ // Handle Zod errors (v3 and v4)
60
+ if (err &&
61
+ typeof err === "object" &&
62
+ "issues" in err &&
63
+ Array.isArray(err.issues)) {
64
+ const issues = err.issues.map((issue) => ({
65
+ path: issue.path.map(String).join("."),
66
+ message: issue.message,
67
+ }));
68
+ return new ValidationError("Validation failed", issues);
69
+ }
70
+ if (err instanceof Error) {
71
+ return new ValidationError(err.message);
72
+ }
73
+ return new ValidationError("Validation failed");
74
+ }
75
+ // ─── JSON Helpers ─────────────────────────────────────────────
76
+ function jsonResponse(data, status = 200) {
77
+ return new Response(JSON.stringify(data), {
78
+ status,
79
+ headers: { "Content-Type": "application/json" },
80
+ });
81
+ }
82
+ function errorResponse(message, status) {
83
+ return jsonResponse({ error: message }, status);
84
+ }
85
+ // ─── Route Handler Factory ───────────────────────────────────
86
+ /**
87
+ * Create a configured route handler factory. Call this once with your
88
+ * auth adapter and error handlers, then use the returned function
89
+ * to create individual route handlers.
90
+ *
91
+ * @example
92
+ * ```typescript
93
+ * // src/lib/ertk-handler.ts
94
+ * import { configureHandler } from "ertk/next";
95
+ *
96
+ * export const createRouteHandler = configureHandler({
97
+ * auth: {
98
+ * getUser: async (req) => {
99
+ * const session = await getServerSession(authOptions);
100
+ * if (!session?.user?.email) return null;
101
+ * return await db.user.findUnique({ where: { email: session.user.email } });
102
+ * },
103
+ * },
104
+ * errorHandlers: [
105
+ * (error) => {
106
+ * if (error instanceof Prisma.PrismaClientKnownRequestError) {
107
+ * if (error.code === "P2025") return errorResponse("Not found", 404);
108
+ * }
109
+ * return null;
110
+ * },
111
+ * ],
112
+ * });
113
+ * ```
114
+ */
115
+ export function configureHandler(options = {}) {
116
+ return function createRouteHandler(def) {
117
+ return async (req, ctx) => {
118
+ try {
119
+ const params = ctx?.params ? await ctx.params : {};
120
+ // Parse and validate request
121
+ const { body, query } = await parseAndValidateRequest(req, def.request);
122
+ // Resolve user for protected endpoints
123
+ let user = undefined;
124
+ if (def.protected) {
125
+ if (!options.auth) {
126
+ return errorResponse("No auth adapter configured for protected endpoint", 500);
127
+ }
128
+ user = await options.auth.getUser(req);
129
+ if (!user) {
130
+ return errorResponse("Unauthorized", 401);
131
+ }
132
+ }
133
+ // Call the endpoint handler
134
+ if (!def.handler) {
135
+ return errorResponse("No handler defined for this endpoint", 501);
136
+ }
137
+ const result = await def.handler({
138
+ user: (user ?? { id: "" }),
139
+ body,
140
+ query,
141
+ params,
142
+ req,
143
+ });
144
+ return jsonResponse(result);
145
+ }
146
+ catch (error) {
147
+ // Run custom error handlers
148
+ if (options.errorHandlers) {
149
+ for (const handler of options.errorHandlers) {
150
+ const response = handler(error);
151
+ if (response)
152
+ return response;
153
+ }
154
+ }
155
+ // Handle validation errors
156
+ if (error instanceof ValidationError) {
157
+ if (error.issues) {
158
+ return jsonResponse({ error: "Validation failed", details: error.issues }, 400);
159
+ }
160
+ return errorResponse(error.message, 400);
161
+ }
162
+ // Handle errors with a status property
163
+ if (error instanceof Error &&
164
+ "status" in error &&
165
+ typeof error.status === "number") {
166
+ return errorResponse(error.message || "An error occurred", error.status);
167
+ }
168
+ // Generic error
169
+ if (error instanceof Error) {
170
+ console.error("ERTK Route Error:", {
171
+ message: error.message,
172
+ stack: error.stack,
173
+ });
174
+ }
175
+ else {
176
+ console.error("ERTK Route Error:", error);
177
+ }
178
+ return errorResponse("An unexpected error occurred", 500);
179
+ }
180
+ };
181
+ };
182
+ }
183
+ /**
184
+ * Default createRouteHandler with no auth or custom error handling.
185
+ * Suitable for unprotected endpoints or quick prototyping.
186
+ *
187
+ * For protected endpoints, use `configureHandler()` with an auth adapter.
188
+ */
189
+ export const createRouteHandler = configureHandler();
190
+ //# sourceMappingURL=route-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-handler.js","sourceRoot":"","sources":["../../src/next/route-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Core ERTK type definitions.
3
+ *
4
+ * Generalized from the original Pointwise implementation to be
5
+ * framework-agnostic at the type level.
6
+ */
7
+ export type TagType = string;
8
+ export type TagDescription = TagType | {
9
+ type: TagType;
10
+ id: string | number;
11
+ };
12
+ export interface SingleOptimistic<TArgs> {
13
+ target: string;
14
+ args: (params: TArgs) => unknown;
15
+ update: (draft: unknown, params: TArgs) => void;
16
+ }
17
+ export interface MultiOptimistic<TArgs> {
18
+ updates: Array<{
19
+ target: string;
20
+ args: (params: TArgs) => unknown;
21
+ update: (draft: unknown, params: TArgs) => void;
22
+ condition?: (params: TArgs) => boolean;
23
+ }>;
24
+ }
25
+ /**
26
+ * Minimal user shape required by ERTK. Consumers extend this
27
+ * via their auth adapter to add project-specific fields.
28
+ */
29
+ export interface DefaultUser {
30
+ id: string;
31
+ [key: string]: unknown;
32
+ }
33
+ /**
34
+ * Context passed to endpoint handlers on the server side.
35
+ */
36
+ export interface HandlerContext<TBody = unknown, TQuery = unknown, TUser = DefaultUser> {
37
+ user: TUser;
38
+ body: TBody;
39
+ query: TQuery;
40
+ params: Record<string, string>;
41
+ req: Request;
42
+ }
43
+ /**
44
+ * Minimal validation interface. Compatible with Zod, Valibot, ArkType,
45
+ * or any library that exposes a `parse(data) => T` method.
46
+ */
47
+ export interface ValidationSchema<T = unknown> {
48
+ parse: (data: unknown) => T;
49
+ }
50
+ export interface EndpointDefinition<TResponse = unknown, TArgs = void> {
51
+ /** Name used for the generated RTK Query hook (e.g., "getTasks" → useGetTasksQuery) */
52
+ name: string;
53
+ /** HTTP method */
54
+ method: "get" | "post" | "put" | "patch" | "delete";
55
+ /** Optional request validation schema (Zod, Valibot, etc.) */
56
+ request?: ValidationSchema;
57
+ /** RTK Query cache tag configuration */
58
+ tags?: {
59
+ provides?: TagDescription[] | ((result: TResponse | undefined, error: unknown, args: TArgs) => TagDescription[]);
60
+ invalidates?: TagDescription[] | ((result: TResponse | undefined, error: unknown, args: TArgs) => TagDescription[]);
61
+ };
62
+ /** Whether this endpoint requires authentication (default: true) */
63
+ protected: boolean;
64
+ /** Client-side query function for RTK Query */
65
+ query?: (args: TArgs) => string | {
66
+ url: string;
67
+ method?: string;
68
+ body?: unknown;
69
+ };
70
+ /** Optimistic update configuration */
71
+ optimistic?: SingleOptimistic<TArgs> | MultiOptimistic<TArgs>;
72
+ /**
73
+ * Server-side handler. Optional — omit for client-only endpoints
74
+ * that consume an external API.
75
+ */
76
+ handler?: (ctx: HandlerContext<any, any>) => Promise<unknown>;
77
+ }
78
+ export interface ErtkRoutesConfig {
79
+ /** Directory where Next.js route files are generated (e.g., "src/app/api") */
80
+ dir: string;
81
+ /**
82
+ * Module that exports `createRouteHandler`.
83
+ * Generated route files will import from this module.
84
+ * Default: "ertk/next"
85
+ */
86
+ handlerModule?: string;
87
+ /** Top-level route directories to skip during generation (e.g., ["auth"]) */
88
+ ignoredRoutes?: string[];
89
+ }
90
+ export interface ErtkConfig {
91
+ /** Directory containing endpoint definition files. Default: "src/endpoints" */
92
+ endpoints?: string;
93
+ /** Directory for generated output files. Default: "src/generated" */
94
+ generated?: string;
95
+ /**
96
+ * Path alias prefix (e.g., "@app", "@src", "@myproject").
97
+ * If omitted, auto-detected from tsconfig.json paths.
98
+ */
99
+ pathAlias?: string;
100
+ /** Base URL for fetchBaseQuery. Default: "/api" */
101
+ baseUrl?: string;
102
+ /**
103
+ * Custom baseQuery source code string. Overrides baseUrl if provided.
104
+ * Allows full control over fetch configuration (auth headers, etc.).
105
+ *
106
+ * @example
107
+ * ```
108
+ * baseQuery: `fetchBaseQuery({
109
+ * baseUrl: "https://api.example.com",
110
+ * prepareHeaders: (headers) => {
111
+ * headers.set("Authorization", \`Bearer \${getToken()}\`);
112
+ * return headers;
113
+ * },
114
+ * })`
115
+ * ```
116
+ */
117
+ baseQuery?: string;
118
+ /**
119
+ * Filenames that map to CRUD operations and don't become URL segments.
120
+ * Default: ["get", "list", "create", "update", "delete", "send", "remove", "cancel"]
121
+ */
122
+ crudFilenames?: string[];
123
+ /**
124
+ * Route generation config. Omit entirely to skip route generation
125
+ * (client-only mode).
126
+ */
127
+ routes?: ErtkRoutesConfig;
128
+ }
129
+ /**
130
+ * Resolved config with all defaults applied and paths made absolute.
131
+ * Used internally by the codegen.
132
+ */
133
+ export interface ResolvedConfig {
134
+ root: string;
135
+ endpointsDir: string;
136
+ generatedDir: string;
137
+ manifestPath: string;
138
+ pathAlias: string;
139
+ aliasRoot: string;
140
+ baseUrl: string;
141
+ baseQuery: string | null;
142
+ crudFilenames: Set<string>;
143
+ routes: {
144
+ dir: string;
145
+ handlerModule: string;
146
+ ignoredRoutes: Set<string>;
147
+ } | null;
148
+ }
149
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Core ERTK type definitions.
3
+ *
4
+ * Generalized from the original Pointwise implementation to be
5
+ * framework-agnostic at the type level.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
package/package.json ADDED
@@ -0,0 +1,75 @@
1
+ {
2
+ "name": "ertk",
3
+ "version": "0.1.0",
4
+ "description": "Easy RTK — Define endpoints once, generate RTK Query hooks and route handlers automatically",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/index.d.ts",
9
+ "import": "./dist/index.js"
10
+ },
11
+ "./next": {
12
+ "types": "./dist/next/index.d.ts",
13
+ "import": "./dist/next/index.js"
14
+ }
15
+ },
16
+ "bin": {
17
+ "ertk": "dist/cli.js"
18
+ },
19
+ "files": [
20
+ "dist"
21
+ ],
22
+ "scripts": {
23
+ "build": "tsc",
24
+ "dev": "tsc --watch",
25
+ "prepublishOnly": "tsc"
26
+ },
27
+ "keywords": [
28
+ "rtk",
29
+ "redux",
30
+ "rtk-query",
31
+ "codegen",
32
+ "next.js",
33
+ "api",
34
+ "endpoints"
35
+ ],
36
+ "author": "Amber Cowled",
37
+ "license": "MIT",
38
+ "repository": {
39
+ "type": "git",
40
+ "url": "git+https://github.com/AmberCowled/ertk.git"
41
+ },
42
+ "homepage": "https://github.com/AmberCowled/ertk#readme",
43
+ "bugs": {
44
+ "url": "https://github.com/AmberCowled/ertk/issues"
45
+ },
46
+ "dependencies": {
47
+ "jiti": "^2.4.2",
48
+ "ts-morph": "^27.0.2"
49
+ },
50
+ "peerDependencies": {
51
+ "@reduxjs/toolkit": "^2.0.0",
52
+ "next": ">=14.0.0",
53
+ "react": ">=18.0.0",
54
+ "react-redux": "^9.0.0",
55
+ "typescript": "^5.0.0",
56
+ "zod": "^3.0.0 || ^4.0.0"
57
+ },
58
+ "peerDependenciesMeta": {
59
+ "next": {
60
+ "optional": true
61
+ },
62
+ "zod": {
63
+ "optional": true
64
+ }
65
+ },
66
+ "devDependencies": {
67
+ "@reduxjs/toolkit": "^2.5.0",
68
+ "@types/node": "^22.0.0",
69
+ "next": "^16.0.0",
70
+ "react": "^19.0.0",
71
+ "react-redux": "^9.2.0",
72
+ "typescript": "^5.0.0",
73
+ "zod": "^4.0.0"
74
+ }
75
+ }