@deessejs/functions 0.0.13 → 0.0.15
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/api/index.js +3 -1
- package/dist/api/types.d.ts +4 -4
- package/dist/context/define.d.ts +8 -8
- package/dist/context/define.js +8 -0
- package/dist/context/index.d.ts +1 -0
- package/dist/context/index.js +1 -0
- package/dist/context/types.d.ts +15 -0
- package/dist/functions/mutation.d.ts +3 -10
- package/dist/functions/mutation.js +1 -29
- package/dist/functions/types.d.ts +4 -3
- package/package.json +1 -1
package/dist/api/index.js
CHANGED
|
@@ -6,7 +6,9 @@ const parse_1 = require("../functions/parse");
|
|
|
6
6
|
const types_1 = require("../types");
|
|
7
7
|
function createAPI(config) {
|
|
8
8
|
const hydrate = (node) => {
|
|
9
|
-
if (node &&
|
|
9
|
+
if (node &&
|
|
10
|
+
typeof node === "object" &&
|
|
11
|
+
(node._type === "query" || node._type === "mutation")) {
|
|
10
12
|
const def = node;
|
|
11
13
|
return (input) => {
|
|
12
14
|
const parsed = (0, parse_1.parseArgs)(def.args, input);
|
package/dist/api/types.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import z
|
|
2
|
-
import { QueryDefinition } from "../context
|
|
1
|
+
import z from "zod";
|
|
2
|
+
import { MutationDefinition, QueryDefinition } from "../context";
|
|
3
3
|
import { AsyncResult } from "../types";
|
|
4
|
-
type
|
|
4
|
+
type InferOperationFn<T> = T extends QueryDefinition<any, infer TArgs, infer TOutput, infer TError> | MutationDefinition<any, infer TArgs, infer TOutput, infer TError> ? (input: z.input<TArgs>) => AsyncResult<TOutput, TError> : never;
|
|
5
5
|
export type ApiRouter<T> = {
|
|
6
|
-
[K in keyof T]: T[K] extends QueryDefinition<any, any, any, any> ?
|
|
6
|
+
[K in keyof T]: T[K] extends QueryDefinition<any, any, any, any> | MutationDefinition<any, any, any, any> ? InferOperationFn<T[K]> : T[K] extends Record<string, any> ? ApiRouter<T[K]> : never;
|
|
7
7
|
};
|
|
8
8
|
export {};
|
package/dist/context/define.d.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import z, { ZodType } from "zod";
|
|
2
2
|
import { Exception } from "../errors/types";
|
|
3
3
|
import { AsyncResult } from "../types";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
name: string;
|
|
7
|
-
args: TArgs;
|
|
8
|
-
handler: (args: z.infer<TArgs>, ctx: TContext) => AsyncResult<TOutput, TError>;
|
|
9
|
-
};
|
|
10
|
-
export type APINode = QueryDefinition<any, any, any, any> | {
|
|
4
|
+
import { CommandsDefinition, MutationDefinition, QueryDefinition } from "./types";
|
|
5
|
+
export type APINode = CommandsDefinition | {
|
|
11
6
|
[key: string]: APINode;
|
|
12
7
|
};
|
|
13
8
|
export declare function defineContext<TContext extends Record<string, unknown>>(): {
|
|
14
9
|
query: <TArgs extends ZodType<any, any, any>, TOutput, TError extends Exception = Exception>(options: {
|
|
15
10
|
name: string;
|
|
16
11
|
args: TArgs;
|
|
17
|
-
handler: (args: z.infer<TArgs
|
|
12
|
+
handler: (ctx: TContext, args: z.infer<TArgs>) => AsyncResult<TOutput, TError>;
|
|
18
13
|
}) => QueryDefinition<TContext, TArgs, TOutput, TError>;
|
|
14
|
+
mutation: <TArgs extends ZodType<any, any, any>, TOutput, TError extends Exception = Exception>(options: {
|
|
15
|
+
name: string;
|
|
16
|
+
args: TArgs;
|
|
17
|
+
handler: (ctx: TContext, args: z.infer<TArgs>) => AsyncResult<TOutput, TError>;
|
|
18
|
+
}) => MutationDefinition<TContext, TArgs, TOutput, TError>;
|
|
19
19
|
group: <T extends Record<string, APINode>>(definitions: T) => T;
|
|
20
20
|
};
|
package/dist/context/define.js
CHANGED
|
@@ -11,6 +11,14 @@ function defineContext() {
|
|
|
11
11
|
handler: options.handler,
|
|
12
12
|
};
|
|
13
13
|
},
|
|
14
|
+
mutation: (options) => {
|
|
15
|
+
return {
|
|
16
|
+
_type: "mutation",
|
|
17
|
+
name: options.name,
|
|
18
|
+
args: options.args,
|
|
19
|
+
handler: options.handler,
|
|
20
|
+
};
|
|
21
|
+
},
|
|
14
22
|
group: (definitions) => {
|
|
15
23
|
return definitions;
|
|
16
24
|
},
|
package/dist/context/index.d.ts
CHANGED
package/dist/context/index.js
CHANGED
package/dist/context/types.d.ts
CHANGED
|
@@ -1 +1,16 @@
|
|
|
1
|
+
import z, { ZodType } from "zod";
|
|
2
|
+
import { Exception } from "../errors/types";
|
|
3
|
+
import { AsyncResult } from "../types";
|
|
1
4
|
export type Context = Record<string, unknown>;
|
|
5
|
+
export type CommandDefinition<TContext, TArgs extends ZodType, TOutput, TError extends Exception> = {
|
|
6
|
+
name: string;
|
|
7
|
+
args: TArgs;
|
|
8
|
+
handler: (ctx: TContext, args: z.infer<TArgs>) => AsyncResult<TOutput, TError>;
|
|
9
|
+
};
|
|
10
|
+
export type QueryDefinition<TContext, TArgs extends ZodType, TOutput, TError extends Exception> = CommandDefinition<TContext, TArgs, TOutput, TError> & {
|
|
11
|
+
_type: "query";
|
|
12
|
+
};
|
|
13
|
+
export type MutationDefinition<TContext, TArgs extends ZodType, TOutput, TError extends Exception> = CommandDefinition<TContext, TArgs, TOutput, TError> & {
|
|
14
|
+
_type: "mutation";
|
|
15
|
+
};
|
|
16
|
+
export type CommandsDefinition = QueryDefinition<any, any, any, any> | MutationDefinition<any, any, any, any>;
|
|
@@ -1,15 +1,8 @@
|
|
|
1
1
|
import { z, ZodType } from "zod";
|
|
2
2
|
import { Exception } from "../errors/types";
|
|
3
3
|
import { AsyncResult } from "../types";
|
|
4
|
-
export declare function mutation<TArgs extends ZodType<any, any, any>, TOutput, TError extends Exception = Exception>(options: {
|
|
5
|
-
|
|
6
|
-
handler: (args: z.infer<TArgs>) => AsyncResult<TOutput, TError>;
|
|
7
|
-
}): (input: z.core.output<TArgs>) => AsyncResult<TOutput, TError>;
|
|
8
|
-
export declare const createMutation: <TContext extends Record<string, unknown> = Record<string, unknown>>() => <TArgs extends ZodType<any, any, any>, TOutput, TError extends Exception = Exception>(options: {
|
|
9
|
-
args: TArgs;
|
|
10
|
-
handler: (args: z.infer<TArgs>) => AsyncResult<TOutput, TError>;
|
|
11
|
-
}) => (input: z.core.output<TArgs>) => AsyncResult<TOutput, TError>;
|
|
12
|
-
export declare function mutationWithContext<TArgs extends ZodType<any, any, any>, TOutput, TError extends Exception = Exception, TContext extends Record<string, unknown> = Record<string, unknown>>(options: {
|
|
4
|
+
export declare function mutation<TArgs extends ZodType<any, any, any>, TOutput, TError extends Exception = Exception, TContext extends Record<string, unknown> = Record<string, unknown>>(options: {
|
|
5
|
+
name: string;
|
|
13
6
|
args: TArgs;
|
|
14
7
|
handler: (args: z.infer<TArgs>, ctx: TContext) => AsyncResult<TOutput, TError>;
|
|
15
|
-
}): (input: z.core.output<TArgs>, context
|
|
8
|
+
}): (input: z.core.output<TArgs>, context: TContext) => AsyncResult<TOutput, TError>;
|
|
@@ -1,43 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createMutation = void 0;
|
|
4
3
|
exports.mutation = mutation;
|
|
5
|
-
exports.mutationWithContext = mutationWithContext;
|
|
6
4
|
const errors_1 = require("../errors");
|
|
7
5
|
const types_1 = require("../types");
|
|
8
6
|
const parse_1 = require("./parse");
|
|
9
|
-
// Mutation functions do not accept context to avoid side effects
|
|
10
|
-
// They remain pure and focused on state modification
|
|
11
7
|
function mutation(options) {
|
|
12
|
-
return (input) => {
|
|
13
|
-
const parsed = (0, parse_1.parseArgs)(options.args, input);
|
|
14
|
-
return parsed.match({
|
|
15
|
-
onSuccess: (data) => options.handler(data),
|
|
16
|
-
onFailure: (error) => {
|
|
17
|
-
const ValidationError = (0, errors_1.exception)({
|
|
18
|
-
name: "ValidationError",
|
|
19
|
-
message: error.message,
|
|
20
|
-
});
|
|
21
|
-
return Promise.resolve((0, types_1.failure)(ValidationError));
|
|
22
|
-
},
|
|
23
|
-
});
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
// Mutation builder for consistency with query builder
|
|
27
|
-
const createMutation = () => {
|
|
28
|
-
return (options) => {
|
|
29
|
-
return mutation(options);
|
|
30
|
-
};
|
|
31
|
-
};
|
|
32
|
-
exports.createMutation = createMutation;
|
|
33
|
-
// Optional: Mutation that can access context but should not modify it
|
|
34
|
-
function mutationWithContext(options) {
|
|
35
8
|
return (input, context) => {
|
|
36
9
|
const parsed = (0, parse_1.parseArgs)(options.args, input);
|
|
37
10
|
return parsed.match({
|
|
38
11
|
onSuccess: (data) => {
|
|
39
|
-
|
|
40
|
-
const ctx = context ?? globalThis.__context;
|
|
12
|
+
const ctx = context;
|
|
41
13
|
return options.handler(data, ctx);
|
|
42
14
|
},
|
|
43
15
|
onFailure: (error) => {
|
|
@@ -27,7 +27,8 @@ export type Query<TArgs extends ZodType = ZodType, TError extends Exception = Ex
|
|
|
27
27
|
args: TArgs;
|
|
28
28
|
handler: (args: z.infer<TArgs>, ctx: TContext) => AsyncResult<TOutput, TError>;
|
|
29
29
|
}) => (args: z.infer<TArgs>, ctx: TContext) => AsyncResult<TOutput, TError>;
|
|
30
|
-
export type Mutation<TArgs extends ZodType = ZodType, TError extends Exception = Exception, TOutput = Unit> = (options: {
|
|
30
|
+
export type Mutation<TArgs extends ZodType = ZodType, TError extends Exception = Exception, TOutput = Unit, TContext = {}> = (options: {
|
|
31
|
+
name: string;
|
|
31
32
|
args: TArgs;
|
|
32
|
-
handler: (args: z.infer<TArgs
|
|
33
|
-
}) => (args: z.infer<TArgs
|
|
33
|
+
handler: (args: z.infer<TArgs>, ctx: TContext) => AsyncResult<TOutput, TError>;
|
|
34
|
+
}) => (args: z.infer<TArgs>, ctx: TContext) => AsyncResult<TOutput, TError>;
|
package/package.json
CHANGED