@eecho/definition 0.0.3 → 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/api/api.d.ts +100 -5
- package/dist/api/api.d.ts.map +1 -1
- package/dist/api/api.js +85 -8
- package/dist/api/api.js.map +1 -1
- package/dist/api/definition.api.helper.d.ts +15 -7
- package/dist/api/definition.api.helper.d.ts.map +1 -1
- package/dist/api/definition.api.helper.js +7 -3
- package/dist/api/definition.api.helper.js.map +1 -1
- package/dist/definition.type.d.ts +8 -4
- package/dist/definition.type.d.ts.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/repository/definition.repository.helper.d.ts +9 -4
- package/dist/repository/definition.repository.helper.d.ts.map +1 -1
- package/dist/repository/definition.repository.helper.js +14 -9
- package/dist/repository/definition.repository.helper.js.map +1 -1
- package/dist/spec.d.ts +2 -3
- package/dist/spec.d.ts.map +1 -1
- package/dist/view.definition.d.ts +2 -2
- package/dist/view.definition.d.ts.map +1 -1
- package/dist/view.definition.js +0 -1
- package/dist/view.definition.js.map +1 -1
- package/package.json +3 -3
- package/dist/model/model.define.helper.d.ts +0 -2
- package/dist/model/model.define.helper.d.ts.map +0 -1
- package/dist/model/model.define.helper.js +0 -2
- package/dist/model/model.define.helper.js.map +0 -1
package/dist/api/api.d.ts
CHANGED
|
@@ -1,6 +1,101 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { Definition } from '../model/model.define.type.js';
|
|
3
|
+
/**
|
|
4
|
+
* Creates the transport contract shared by API clients and server adapters.
|
|
5
|
+
* Database-specific coercion belongs in the repository adapter, not in this contract.
|
|
6
|
+
*/
|
|
7
|
+
export declare function genAPIDefinition<TDefinition extends Definition, const TPrefix extends string>(params: {
|
|
8
|
+
definition: TDefinition;
|
|
9
|
+
endpointPrefix: TPrefix;
|
|
10
|
+
}): {
|
|
11
|
+
CreateAPISpecification: {
|
|
12
|
+
readonly APIEndpoint: `${TPrefix}/createItems`;
|
|
13
|
+
readonly Method: "POST";
|
|
14
|
+
readonly operationId: "createItems";
|
|
15
|
+
readonly Request: {
|
|
16
|
+
readonly body: z.ZodObject<{
|
|
17
|
+
data: z.ZodObject<({ [K_1 in keyof TDefinition]: TDefinition[K_1] extends import("../model/model.define.type.js").PrimitiveDefinition<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, readonly import("../model/model.define.type.js").PrimitiveIndex[], infer TApi extends import("../model/model.define.type.js").APIIndex, string> ? TApi["create"] extends readonly unknown[] ? Extract<"Optional", TApi["create"][number]> | Extract<"System", TApi["create"][number]> extends never ? K_1 : never : K_1 : never; }[keyof TDefinition] extends infer T_1 extends keyof TDefinition ? { [K in T_1 as TDefinition[K] extends import("../model/model.define.type.js").PrimitiveDefinition<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, readonly import("../model/model.define.type.js").PrimitiveIndex[], import("../model/model.define.type.js").APIIndex, string> ? K : never]: TDefinition[K] extends import("../model/model.define.type.js").PrimitiveDefinition<infer TSchema extends z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, readonly import("../model/model.define.type.js").PrimitiveIndex[], import("../model/model.define.type.js").APIIndex, string> ? TSchema : never; } : never) extends infer T ? { -readonly [P in keyof T]: T[P]; } : never, z.core.$strip>;
|
|
18
|
+
}, z.core.$strip>;
|
|
19
|
+
};
|
|
20
|
+
readonly Response: {
|
|
21
|
+
readonly body: z.ZodObject<{
|
|
22
|
+
success: z.ZodLiteral<true>;
|
|
23
|
+
data: z.ZodObject<{
|
|
24
|
+
id: z.ZodUnknown;
|
|
25
|
+
}, z.core.$strip>;
|
|
26
|
+
}, z.core.$strip>;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
ReadAPISpecification: {
|
|
30
|
+
readonly APIEndpoint: `${TPrefix}/getItems`;
|
|
31
|
+
readonly Method: "GET";
|
|
32
|
+
readonly operationId: "getItems";
|
|
33
|
+
readonly Request: {
|
|
34
|
+
readonly queryParams: z.ZodObject<{
|
|
35
|
+
page: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
36
|
+
limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
37
|
+
filter: z.ZodOptional<z.ZodObject<(({ [K_4 in keyof TDefinition]: TDefinition[K_4] extends import("../model/model.define.type.js").PrimitiveDefinition<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, readonly import("../model/model.define.type.js").PrimitiveIndex[], infer TApi extends import("../model/model.define.type.js").APIIndex, string> ? TApi["read"] extends readonly unknown[] ? "Searchable" extends infer T_5 ? T_5 extends "Searchable" ? T_5 extends TApi["read"][number] ? K_4 : never : never : never : never : never; }[keyof TDefinition] extends infer T_4 extends keyof TDefinition ? { [K_3 in T_4 as TDefinition[K_3] extends import("../model/model.define.type.js").PrimitiveDefinition<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, readonly import("../model/model.define.type.js").PrimitiveIndex[], import("../model/model.define.type.js").APIIndex, string> ? K_3 : never]: TDefinition[K_3] extends import("../model/model.define.type.js").PrimitiveDefinition<infer TSchema extends z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, readonly import("../model/model.define.type.js").PrimitiveIndex[], import("../model/model.define.type.js").APIIndex, string> ? TSchema : never; } : never) extends infer T_3 extends Record<string, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>> ? { [K_2 in keyof T_3]: z.ZodOptional<T_3[K_2]>; } : never) & (({ [K_7 in keyof TDefinition]: TDefinition[K_7] extends import("../model/model.define.type.js").PrimitiveDefinition<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, readonly import("../model/model.define.type.js").PrimitiveIndex[], infer TApi extends import("../model/model.define.type.js").APIIndex, string> ? TApi["read"] extends readonly unknown[] ? "SearchableArray" extends infer T_7 ? T_7 extends "SearchableArray" ? T_7 extends TApi["read"][number] ? K_7 : never : never : never : never : never; }[keyof TDefinition] extends infer T_6 extends keyof TDefinition ? { [K_6 in T_6 as TDefinition[K_6] extends import("../model/model.define.type.js").PrimitiveDefinition<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, readonly import("../model/model.define.type.js").PrimitiveIndex[], import("../model/model.define.type.js").APIIndex, string> ? K_6 : never]: TDefinition[K_6] extends import("../model/model.define.type.js").PrimitiveDefinition<infer TSchema extends z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, readonly import("../model/model.define.type.js").PrimitiveIndex[], import("../model/model.define.type.js").APIIndex, string> ? TSchema : never; } : never) extends infer T_5 extends Record<string, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>> ? { [K_5 in keyof T_5]: z.ZodOptional<z.ZodArray<T_5[K_5]>>; } : never) extends infer T_2 ? { -readonly [P_1 in keyof T_2]: T_2[P_1]; } : never, z.core.$strip>>;
|
|
38
|
+
sort: z.ZodOptional<z.ZodObject<({ [K_9 in keyof TDefinition]: TDefinition[K_9] extends import("../model/model.define.type.js").PrimitiveDefinition<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, readonly import("../model/model.define.type.js").PrimitiveIndex[], infer TApi extends import("../model/model.define.type.js").APIIndex, string> ? TApi["read"] extends readonly unknown[] ? "Sortable" extends infer T_9 ? T_9 extends "Sortable" ? T_9 extends TApi["read"][number] ? K_9 : never : never : never : never : never; }[keyof TDefinition] extends infer T_8 extends keyof TDefinition ? { [K_8 in T_8]: z.ZodOptional<z.ZodEnum<{
|
|
39
|
+
asc: "asc";
|
|
40
|
+
desc: "desc";
|
|
41
|
+
}>>; } : never) extends infer T_7 ? { -readonly [P_2 in keyof T_7]: T_7[P_2]; } : never, z.core.$strip>>;
|
|
42
|
+
}, z.core.$strip>;
|
|
43
|
+
};
|
|
44
|
+
readonly Response: {
|
|
45
|
+
readonly body: z.ZodObject<{
|
|
46
|
+
success: z.ZodLiteral<true>;
|
|
47
|
+
data: z.ZodArray<z.ZodObject<({ [K_11 in keyof TDefinition]: TDefinition[K_11] extends import("../model/model.define.type.js").PrimitiveDefinition<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, readonly import("../model/model.define.type.js").PrimitiveIndex[], infer TApi extends import("../model/model.define.type.js").APIIndex, string> ? TApi["read"] extends readonly unknown[] ? Extract<"Detail", TApi["read"][number]> | Extract<"Hidden", TApi["read"][number]> extends never ? K_11 : never : K_11 : never; }[keyof TDefinition] extends infer T_10 extends keyof TDefinition ? { [K_10 in T_10 as TDefinition[K_10] extends import("../model/model.define.type.js").PrimitiveDefinition<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, readonly import("../model/model.define.type.js").PrimitiveIndex[], import("../model/model.define.type.js").APIIndex, string> ? K_10 : never]: TDefinition[K_10] extends import("../model/model.define.type.js").PrimitiveDefinition<infer TSchema extends z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, readonly import("../model/model.define.type.js").PrimitiveIndex[], import("../model/model.define.type.js").APIIndex, string> ? TSchema : never; } : never) extends infer T_9 ? { -readonly [P_3 in keyof T_9]: T_9[P_3]; } : never, z.core.$strip>>;
|
|
48
|
+
}, z.core.$strip>;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
UpdateAPISpecification: {
|
|
52
|
+
readonly APIEndpoint: `${TPrefix}/updateItem`;
|
|
53
|
+
readonly Method: "POST";
|
|
54
|
+
readonly operationId: "updateItem";
|
|
55
|
+
readonly Request: {
|
|
56
|
+
readonly body: z.ZodObject<{
|
|
57
|
+
id: z.ZodUnknown;
|
|
58
|
+
data: z.ZodObject<(({ [K_14 in keyof TDefinition]: TDefinition[K_14] extends import("../model/model.define.type.js").PrimitiveDefinition<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, readonly import("../model/model.define.type.js").PrimitiveIndex[], infer TApi extends import("../model/model.define.type.js").APIIndex, string> ? TApi["update"] extends readonly unknown[] ? "Updatable" extends infer T_14 ? T_14 extends "Updatable" ? T_14 extends TApi["update"][number] ? K_14 : never : never : never : never : never; }[keyof TDefinition] extends infer T_13 extends keyof TDefinition ? { [K_13 in T_13 as TDefinition[K_13] extends import("../model/model.define.type.js").PrimitiveDefinition<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, readonly import("../model/model.define.type.js").PrimitiveIndex[], import("../model/model.define.type.js").APIIndex, string> ? K_13 : never]: TDefinition[K_13] extends import("../model/model.define.type.js").PrimitiveDefinition<infer TSchema extends z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, readonly import("../model/model.define.type.js").PrimitiveIndex[], import("../model/model.define.type.js").APIIndex, string> ? TSchema : never; } : never) extends infer T_12 extends Record<string, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>> ? { [K_12 in keyof T_12]: z.ZodOptional<T_12[K_12]>; } : never) extends infer T_11 ? { -readonly [P_4 in keyof T_11]: T_11[P_4]; } : never, z.core.$strip>;
|
|
59
|
+
}, z.core.$strip>;
|
|
60
|
+
};
|
|
61
|
+
readonly Response: {
|
|
62
|
+
readonly body: z.ZodObject<{
|
|
63
|
+
success: z.ZodLiteral<true>;
|
|
64
|
+
}, z.core.$strip>;
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
DeleteAPISpecification: {
|
|
68
|
+
readonly APIEndpoint: `${TPrefix}/deleteItems`;
|
|
69
|
+
readonly Method: "POST";
|
|
70
|
+
readonly operationId: "deleteItems";
|
|
71
|
+
readonly Request: {
|
|
72
|
+
readonly body: z.ZodObject<{
|
|
73
|
+
ids: z.ZodArray<z.ZodUnknown>;
|
|
74
|
+
}, z.core.$strip>;
|
|
75
|
+
};
|
|
76
|
+
readonly Response: {
|
|
77
|
+
readonly body: z.ZodObject<{
|
|
78
|
+
success: z.ZodLiteral<true>;
|
|
79
|
+
}, z.core.$strip>;
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
PutAPISpecification: {
|
|
83
|
+
readonly APIEndpoint: `${TPrefix}/putItem`;
|
|
84
|
+
readonly Method: "PUT";
|
|
85
|
+
readonly operationId: "putItem";
|
|
86
|
+
readonly Request: {
|
|
87
|
+
readonly body: z.ZodObject<{
|
|
88
|
+
data: z.ZodObject<({ [K_1 in keyof TDefinition]: TDefinition[K_1] extends import("../model/model.define.type.js").PrimitiveDefinition<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, readonly import("../model/model.define.type.js").PrimitiveIndex[], infer TApi extends import("../model/model.define.type.js").APIIndex, string> ? TApi["create"] extends readonly unknown[] ? Extract<"Optional", TApi["create"][number]> | Extract<"System", TApi["create"][number]> extends never ? K_1 : never : K_1 : never; }[keyof TDefinition] extends infer T_15 extends keyof TDefinition ? { [K in T_15 as TDefinition[K] extends import("../model/model.define.type.js").PrimitiveDefinition<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, readonly import("../model/model.define.type.js").PrimitiveIndex[], import("../model/model.define.type.js").APIIndex, string> ? K : never]: TDefinition[K] extends import("../model/model.define.type.js").PrimitiveDefinition<infer TSchema extends z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, readonly import("../model/model.define.type.js").PrimitiveIndex[], import("../model/model.define.type.js").APIIndex, string> ? TSchema : never; } : never) extends infer T_14 ? { -readonly [P in keyof T_14]: T_14[P]; } : never, z.core.$strip>;
|
|
89
|
+
}, z.core.$strip>;
|
|
90
|
+
};
|
|
91
|
+
readonly Response: {
|
|
92
|
+
readonly body: z.ZodObject<{
|
|
93
|
+
success: z.ZodLiteral<true>;
|
|
94
|
+
data: z.ZodObject<{
|
|
95
|
+
id: z.ZodUnknown;
|
|
96
|
+
}, z.core.$strip>;
|
|
97
|
+
}, z.core.$strip>;
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
};
|
|
6
101
|
//# sourceMappingURL=api.d.ts.map
|
package/dist/api/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api/api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAUhE;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,SAAS,UAAU,EAC9B,KAAK,CAAC,OAAO,SAAS,MAAM,EAC5B,MAAM,EAAE;IACR,UAAU,EAAE,WAAW,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;CACzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0FA"}
|
package/dist/api/api.js
CHANGED
|
@@ -1,15 +1,92 @@
|
|
|
1
|
-
import { z } from
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { extractCreateRequiredField, extractReadableField, extractSearchArrayOption, extractSearchOption, extractSortableOption, extractUpdateOption, } from './definition.api.helper.js';
|
|
3
|
+
/**
|
|
4
|
+
* Creates the transport contract shared by API clients and server adapters.
|
|
5
|
+
* Database-specific coercion belongs in the repository adapter, not in this contract.
|
|
6
|
+
*/
|
|
2
7
|
export function genAPIDefinition(params) {
|
|
8
|
+
const { definition, endpointPrefix } = params;
|
|
9
|
+
const createRequiredFields = extractCreateRequiredField({ definition });
|
|
10
|
+
const readableFields = extractReadableField({ definition });
|
|
11
|
+
const searchableFields = extractSearchOption({ definition });
|
|
12
|
+
const searchableArrayFields = extractSearchArrayOption({ definition });
|
|
13
|
+
const sortableFields = extractSortableOption({ definition });
|
|
14
|
+
const updatableFields = extractUpdateOption({ definition });
|
|
3
15
|
const CreateAPISpecification = {
|
|
4
|
-
APIEndpoint: `${
|
|
16
|
+
APIEndpoint: `${endpointPrefix}/createItems`,
|
|
5
17
|
Method: 'POST',
|
|
6
|
-
|
|
18
|
+
operationId: 'createItems',
|
|
19
|
+
Request: {
|
|
20
|
+
body: z.object({ data: z.object(createRequiredFields) }),
|
|
21
|
+
},
|
|
7
22
|
Response: {
|
|
8
|
-
body: z.object({
|
|
9
|
-
|
|
23
|
+
body: z.object({
|
|
24
|
+
success: z.literal(true),
|
|
25
|
+
data: z.object({ id: z.unknown() }),
|
|
26
|
+
}),
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
const ReadAPISpecification = {
|
|
30
|
+
APIEndpoint: `${endpointPrefix}/getItems`,
|
|
31
|
+
Method: 'GET',
|
|
32
|
+
operationId: 'getItems',
|
|
33
|
+
Request: {
|
|
34
|
+
queryParams: z.object({
|
|
35
|
+
page: z.coerce.number().int().positive().default(1),
|
|
36
|
+
limit: z.coerce.number().int().positive().default(15),
|
|
37
|
+
filter: z.object({
|
|
38
|
+
...searchableFields,
|
|
39
|
+
...searchableArrayFields,
|
|
40
|
+
}).optional(),
|
|
41
|
+
sort: z.object(sortableFields).optional(),
|
|
42
|
+
}),
|
|
43
|
+
},
|
|
44
|
+
Response: {
|
|
45
|
+
body: z.object({
|
|
46
|
+
success: z.literal(true),
|
|
47
|
+
data: z.array(z.object(readableFields)),
|
|
48
|
+
}),
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
const UpdateAPISpecification = {
|
|
52
|
+
APIEndpoint: `${endpointPrefix}/updateItem`,
|
|
53
|
+
Method: 'POST',
|
|
54
|
+
operationId: 'updateItem',
|
|
55
|
+
Request: {
|
|
56
|
+
body: z.object({
|
|
57
|
+
id: z.unknown(),
|
|
58
|
+
data: z.object(updatableFields),
|
|
59
|
+
}),
|
|
60
|
+
},
|
|
61
|
+
Response: {
|
|
62
|
+
body: z.object({ success: z.literal(true) }),
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
const DeleteAPISpecification = {
|
|
66
|
+
APIEndpoint: `${endpointPrefix}/deleteItems`,
|
|
67
|
+
Method: 'POST',
|
|
68
|
+
operationId: 'deleteItems',
|
|
69
|
+
Request: {
|
|
70
|
+
body: z.object({
|
|
71
|
+
ids: z.array(z.unknown()).min(1),
|
|
72
|
+
}),
|
|
73
|
+
},
|
|
74
|
+
Response: {
|
|
75
|
+
body: z.object({ success: z.literal(true) }),
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
const PutAPISpecification = {
|
|
79
|
+
...CreateAPISpecification,
|
|
80
|
+
APIEndpoint: `${endpointPrefix}/putItem`,
|
|
81
|
+
Method: 'PUT',
|
|
82
|
+
operationId: 'putItem',
|
|
83
|
+
};
|
|
84
|
+
return {
|
|
85
|
+
CreateAPISpecification,
|
|
86
|
+
ReadAPISpecification,
|
|
87
|
+
UpdateAPISpecification,
|
|
88
|
+
DeleteAPISpecification,
|
|
89
|
+
PutAPISpecification,
|
|
10
90
|
};
|
|
11
|
-
const ReadAPISpecification = {};
|
|
12
|
-
const UpdateAPISpecification = {};
|
|
13
|
-
const DeleteAPISpecification = {};
|
|
14
91
|
}
|
|
15
92
|
//# sourceMappingURL=api.js.map
|
package/dist/api/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { Definition, PrimitiveDefinition } from '../model/model.define.type.js';
|
|
2
|
+
import { Definition, PrimitiveDefinition, PrimitiveIndex } from '../model/model.define.type.js';
|
|
3
3
|
type APISection = 'create' | 'read' | 'update';
|
|
4
4
|
type PrimitiveSchemaMap<TDefinition extends Definition, TKeys extends keyof TDefinition = keyof TDefinition> = {
|
|
5
5
|
[K in TKeys as TDefinition[K] extends PrimitiveDefinition ? K : never]: TDefinition[K] extends PrimitiveDefinition<infer TSchema> ? TSchema : never;
|
|
@@ -8,23 +8,31 @@ type OptionalSchemaMap<TShape extends Record<string, z.ZodTypeAny>> = {
|
|
|
8
8
|
[K in keyof TShape]: z.ZodOptional<TShape[K]>;
|
|
9
9
|
};
|
|
10
10
|
type OptionalArraySchemaMap<TShape extends Record<string, z.ZodTypeAny>> = {
|
|
11
|
-
[K in keyof TShape]: z.ZodOptional<z.ZodArray<
|
|
11
|
+
[K in keyof TShape]: z.ZodOptional<z.ZodArray<TShape[K]>>;
|
|
12
12
|
};
|
|
13
|
+
type SortSchemaMap<TDefinition extends Definition, TKeys extends keyof TDefinition> = {
|
|
14
|
+
[K in TKeys]: z.ZodOptional<typeof sortDirectionSchema>;
|
|
15
|
+
};
|
|
16
|
+
declare const sortDirectionSchema: z.ZodEnum<{
|
|
17
|
+
asc: "asc";
|
|
18
|
+
desc: "desc";
|
|
19
|
+
}>;
|
|
13
20
|
type PrimitiveKeysWithApiFlag<TDefinition extends Definition, TSection extends APISection, TFlag extends string> = {
|
|
14
|
-
[K in keyof TDefinition]: TDefinition[K] extends PrimitiveDefinition<
|
|
21
|
+
[K in keyof TDefinition]: TDefinition[K] extends PrimitiveDefinition<z.ZodTypeAny, readonly PrimitiveIndex[], infer TApi> ? TApi[TSection] extends readonly unknown[] ? TFlag extends TApi[TSection][number] ? K : never : never : never;
|
|
15
22
|
}[keyof TDefinition];
|
|
16
23
|
type PrimitiveKeysWithoutApiFlags<TDefinition extends Definition, TSection extends APISection, TFlags extends readonly string[]> = {
|
|
17
|
-
[K in keyof TDefinition]: TDefinition[K] extends PrimitiveDefinition<
|
|
24
|
+
[K in keyof TDefinition]: TDefinition[K] extends PrimitiveDefinition<z.ZodTypeAny, readonly PrimitiveIndex[], infer TApi> ? TApi[TSection] extends readonly unknown[] ? Extract<TFlags[number], TApi[TSection][number]> extends never ? K : never : K : never;
|
|
18
25
|
}[keyof TDefinition];
|
|
19
26
|
type PrimitiveKeysWithIndexFlag<TDefinition extends Definition, TFlag extends string> = {
|
|
20
|
-
[K in keyof TDefinition]: TDefinition[K] extends PrimitiveDefinition<
|
|
27
|
+
[K in keyof TDefinition]: TDefinition[K] extends PrimitiveDefinition<z.ZodTypeAny, infer TIndex> ? TFlag extends TIndex[number] ? K : never : never;
|
|
21
28
|
}[keyof TDefinition];
|
|
22
29
|
export declare function extractCreateRequiredField<TDefinition extends Definition>(params: {
|
|
23
30
|
definition: TDefinition;
|
|
24
31
|
}): PrimitiveSchemaMap<TDefinition, PrimitiveKeysWithoutApiFlags<TDefinition, "create", ["Optional", "System"]>>;
|
|
25
|
-
export declare function
|
|
32
|
+
export declare function extractReadableField<TDefinition extends Definition>(params: {
|
|
26
33
|
definition: TDefinition;
|
|
27
34
|
}): PrimitiveSchemaMap<TDefinition, PrimitiveKeysWithoutApiFlags<TDefinition, "read", ["Hidden", "Detail"]>>;
|
|
35
|
+
export declare const extractReadbleField: typeof extractReadableField;
|
|
28
36
|
export declare function extractUpdateOption<TDefinition extends Definition>(params: {
|
|
29
37
|
definition: TDefinition;
|
|
30
38
|
}): OptionalSchemaMap<PrimitiveSchemaMap<TDefinition, PrimitiveKeysWithApiFlag<TDefinition, "update", "Updatable">>>;
|
|
@@ -36,7 +44,7 @@ export declare function extractSearchArrayOption<TDefinition extends Definition>
|
|
|
36
44
|
}): OptionalArraySchemaMap<PrimitiveSchemaMap<TDefinition, PrimitiveKeysWithApiFlag<TDefinition, "read", "SearchableArray">>>;
|
|
37
45
|
export declare function extractSortableOption<TDefinition extends Definition>(params: {
|
|
38
46
|
definition: TDefinition;
|
|
39
|
-
}):
|
|
47
|
+
}): SortSchemaMap<TDefinition, PrimitiveKeysWithApiFlag<TDefinition, "read", "Sortable">>;
|
|
40
48
|
export declare function extractObjectIdFields<TDefinition extends Definition>(params: {
|
|
41
49
|
definition: TDefinition;
|
|
42
50
|
}): Array<PrimitiveKeysWithIndexFlag<TDefinition, "ObjectId">>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.api.helper.d.ts","sourceRoot":"","sources":["../../src/api/definition.api.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"definition.api.helper.d.ts","sourceRoot":"","sources":["../../src/api/definition.api.helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
const sortDirectionSchema = z.enum(['asc', 'desc']);
|
|
1
3
|
function getPrimitiveEntries(definition) {
|
|
2
4
|
return Object.entries(definition).filter(([, value]) => value.kind === 'primitive');
|
|
3
5
|
}
|
|
@@ -16,10 +18,12 @@ export function extractCreateRequiredField(params) {
|
|
|
16
18
|
const createRequiredFields = pickPrimitiveSchemaShape(params.definition, (field) => !hasAnyAPIFlag(field, 'create', ['Optional', 'System']));
|
|
17
19
|
return createRequiredFields;
|
|
18
20
|
}
|
|
19
|
-
export function
|
|
21
|
+
export function extractReadableField(params) {
|
|
20
22
|
const readableFields = pickPrimitiveSchemaShape(params.definition, (field) => !hasAnyAPIFlag(field, 'read', ['Hidden', 'Detail']));
|
|
21
23
|
return readableFields;
|
|
22
24
|
}
|
|
25
|
+
// Keep the original misspelled export so existing consumers can migrate without a breaking release.
|
|
26
|
+
export const extractReadbleField = extractReadableField;
|
|
23
27
|
export function extractUpdateOption(params) {
|
|
24
28
|
const updatableFields = pickPrimitiveSchemaShape(params.definition, (field) => hasAPIFlag(field, 'update', 'Updatable'), (schema) => schema.optional());
|
|
25
29
|
return updatableFields;
|
|
@@ -29,11 +33,11 @@ export function extractSearchOption(params) {
|
|
|
29
33
|
return searchableFields;
|
|
30
34
|
}
|
|
31
35
|
export function extractSearchArrayOption(params) {
|
|
32
|
-
const searchableArrayFields = pickPrimitiveSchemaShape(params.definition, (field) => hasAPIFlag(field, 'read', 'SearchableArray'), (schema) =>
|
|
36
|
+
const searchableArrayFields = pickPrimitiveSchemaShape(params.definition, (field) => hasAPIFlag(field, 'read', 'SearchableArray'), (schema) => z.array(schema).optional());
|
|
33
37
|
return searchableArrayFields;
|
|
34
38
|
}
|
|
35
39
|
export function extractSortableOption(params) {
|
|
36
|
-
const sortableFields = pickPrimitiveSchemaShape(params.definition, (field) => hasAPIFlag(field, 'read', 'Sortable'), (
|
|
40
|
+
const sortableFields = pickPrimitiveSchemaShape(params.definition, (field) => hasAPIFlag(field, 'read', 'Sortable'), () => sortDirectionSchema.optional());
|
|
37
41
|
return sortableFields;
|
|
38
42
|
}
|
|
39
43
|
export function extractObjectIdFields(params) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.api.helper.js","sourceRoot":"","sources":["../../src/api/definition.api.helper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"definition.api.helper.js","sourceRoot":"","sources":["../../src/api/definition.api.helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,12 +11,11 @@ type InferDefinitionValue<TField> = TField extends {
|
|
|
11
11
|
type: infer TObject extends Definition;
|
|
12
12
|
} ? DefinitionDocument<TObject> : never;
|
|
13
13
|
type PrimitiveKeysWithIndexFlag<TDefinition extends Definition, TFlag extends PrimitiveIndex> = {
|
|
14
|
-
[K in keyof TDefinition]: TDefinition[K] extends PrimitiveDefinition<
|
|
14
|
+
[K in keyof TDefinition]: TDefinition[K] extends PrimitiveDefinition<z.ZodTypeAny, infer TIndices> ? TFlag extends TIndices[number] ? K : never : never;
|
|
15
15
|
}[keyof TDefinition];
|
|
16
16
|
type PrimitiveKeysWithApiFlag<TDefinition extends Definition, TSection extends keyof APIIndex, TFlag extends string> = {
|
|
17
|
-
[K in keyof TDefinition]: TDefinition[K] extends PrimitiveDefinition<
|
|
17
|
+
[K in keyof TDefinition]: TDefinition[K] extends PrimitiveDefinition<z.ZodTypeAny, readonly PrimitiveIndex[], infer TApi> ? TApi[TSection] extends readonly unknown[] ? TFlag extends TApi[TSection][number] ? K : never : never : never;
|
|
18
18
|
}[keyof TDefinition];
|
|
19
|
-
type SearchInput<TValue> = TValue extends string ? TValue | TValue[] : TValue;
|
|
20
19
|
export type DefinitionValue<TField> = InferDefinitionValue<TField>;
|
|
21
20
|
export type DefinitionDocument<T extends Definition> = {
|
|
22
21
|
[K in keyof T]: DefinitionValue<T[K]>;
|
|
@@ -26,7 +25,12 @@ export type UpdateField<T extends Definition> = {
|
|
|
26
25
|
[K in PrimitiveKeysWithApiFlag<T, 'update', 'Updatable'>]?: DefinitionValue<T[K]>;
|
|
27
26
|
};
|
|
28
27
|
export type SearchField<T extends Definition> = {
|
|
29
|
-
[K in PrimitiveKeysWithApiFlag<T, 'read', 'Searchable'>]?:
|
|
28
|
+
[K in PrimitiveKeysWithApiFlag<T, 'read', 'Searchable'>]?: DefinitionValue<T[K]>;
|
|
29
|
+
} & {
|
|
30
|
+
[K in PrimitiveKeysWithApiFlag<T, 'read', 'SearchableArray'>]?: DefinitionValue<T[K]>[];
|
|
31
|
+
};
|
|
32
|
+
export type SortField<T extends Definition> = {
|
|
33
|
+
[K in PrimitiveKeysWithApiFlag<T, 'read', 'Sortable'>]?: 'asc' | 'desc';
|
|
30
34
|
};
|
|
31
35
|
export type IdentifierField<T extends Definition> = {
|
|
32
36
|
[K in PrimitiveKeysWithIndexFlag<T, 'Identifier'>]: DefinitionValue<T[K]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.type.d.ts","sourceRoot":"","sources":["../src/definition.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAE9G,KAAK,oBAAoB,CAAC,MAAM,IAC9B,MAAM,SAAS;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,OAAO,SAAS,CAAC,CAAC,UAAU,CAAA;CAAE,GAC1E,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAChB,MAAM,SAAS;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,KAAK,CAAA;CAAE,GACjD,oBAAoB,CAAC,KAAK,CAAC,EAAE,GAC7B,MAAM,SAAS;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,OAAO,SAAS,UAAU,CAAA;CAAE,GACvE,kBAAkB,CAAC,OAAO,CAAC,GAC3B,KAAK,CAAC;AAEhB,KAAK,0BAA0B,CAAC,WAAW,SAAS,UAAU,EAAE,KAAK,SAAS,cAAc,IAAI;KAC7F,CAAC,IAAI,MAAM,WAAW,GACrB,WAAW,CAAC,CAAC,CAAC,SAAS,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"definition.type.d.ts","sourceRoot":"","sources":["../src/definition.type.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
export type { DefinitionDocument, DefinitionValue, IdentifierField, ModelDocument, SearchField, UpdateField, } from './definition.type.js';
|
|
1
|
+
export type { DefinitionDocument, DefinitionValue, IdentifierField, ModelDocument, SearchField, SortField, UpdateField, } from './definition.type.js';
|
|
2
2
|
export type { UpdateField as UpdateFields } from './definition.type.js';
|
|
3
3
|
export { Context } from './definition.context.js';
|
|
4
4
|
export { findRepositoryContext, registerRepositoryContext } from './definition.context.js';
|
|
5
5
|
export type { RepositoryContextEntry } from './definition.context.js';
|
|
6
|
-
export type { ClientAPISpecification, ServerAPISpecification } from './spec.js';
|
|
7
|
-
export {
|
|
6
|
+
export type { APISpecification, ClientAPISpecification, ServerAPISpecification, } from './spec.js';
|
|
7
|
+
export { genAPIDefinition } from './api/api.js';
|
|
8
|
+
export { extractCreateRequiredField, extractReadableField, extractReadbleField, extractUpdateOption, extractSearchOption, extractSearchArrayOption, extractSortableOption, extractObjectIdFields } from './api/definition.api.helper.js';
|
|
8
9
|
export { extractCreateFieldWithSystem } from './repository/definition.repository.helper.js';
|
|
9
10
|
export { defineModel } from './model/model.define.js';
|
|
11
|
+
export { registerModel } from './view.definition.js';
|
|
10
12
|
export type { Definition, DefinitionFrom, InputArrayDefinition, InputDefinition, InputObjectDefinition, InputPrimitiveDefinition, } from './model/model.define.type.js';
|
|
11
13
|
export type { ViewDefinition } from './view.definition.js';
|
|
12
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAExE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAC3F,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEtE,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,aAAa,EACb,WAAW,EACX,SAAS,EACT,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAExE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAC3F,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEtE,YAAY,EACV,gBAAgB,EAChB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,4BAA4B,EAC7B,MAAM,8CAA8C,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,YAAY,EACV,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { Context } from './definition.context.js';
|
|
2
2
|
export { findRepositoryContext, registerRepositoryContext } from './definition.context.js';
|
|
3
|
-
export {
|
|
3
|
+
export { genAPIDefinition } from './api/api.js';
|
|
4
|
+
export { extractCreateRequiredField, extractReadableField, extractReadbleField, extractUpdateOption, extractSearchOption, extractSearchArrayOption, extractSortableOption, extractObjectIdFields } from './api/definition.api.helper.js';
|
|
4
5
|
export { extractCreateFieldWithSystem } from './repository/definition.repository.helper.js';
|
|
5
6
|
export { defineModel } from './model/model.define.js';
|
|
7
|
+
export { registerModel } from './view.definition.js';
|
|
6
8
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAQ3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,4BAA4B,EAC7B,MAAM,8CAA8C,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ArrayDefinition, Definition, ObjectDefinition, PrimitiveDefinition, PrimitiveIndex } from '../model/model.define.type.js';
|
|
3
|
+
import type { DefinitionDocument } from '../definition.type.js';
|
|
4
|
+
type CreateFieldKeys<TDefinition extends Definition> = {
|
|
5
|
+
[K in keyof TDefinition]: TDefinition[K] extends PrimitiveDefinition<z.ZodTypeAny, readonly PrimitiveIndex[], infer TApi> ? 'Optional' extends TApi['create'][number] ? never : K : K;
|
|
6
|
+
}[keyof TDefinition];
|
|
7
|
+
type FieldSchema<TField> = TField extends PrimitiveDefinition<infer TSchema> ? TSchema : TField extends ArrayDefinition<infer TItem> ? z.ZodArray<FieldSchema<TItem>> : TField extends ObjectDefinition<infer TObject> ? z.ZodType<DefinitionDocument<TObject>> : never;
|
|
2
8
|
export declare function extractCreateFieldWithSystem<TDefinition extends Definition>(params: {
|
|
3
9
|
definition: TDefinition;
|
|
4
|
-
}): { [K in
|
|
5
|
-
|
|
6
|
-
} ? Indices extends APIIndex["create"] ? "Optional" extends Indices[number] ? never : K : K : K : K]: TDefinition[K]["type"]; };
|
|
10
|
+
}): { [K in CreateFieldKeys<TDefinition>]: FieldSchema<TDefinition[K]>; };
|
|
11
|
+
export {};
|
|
7
12
|
//# sourceMappingURL=definition.repository.helper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.repository.helper.d.ts","sourceRoot":"","sources":["../../src/repository/definition.repository.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"definition.repository.helper.d.ts","sourceRoot":"","sources":["../../src/repository/definition.repository.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACf,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,KAAK,eAAe,CAAC,WAAW,SAAS,UAAU,IAAI;KACpD,CAAC,IAAI,MAAM,WAAW,GACrB,WAAW,CAAC,CAAC,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,EAAE,MAAM,IAAI,CAAC,GAC3F,UAAU,SAAS,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GACvC,KAAK,GACL,CAAC,GACH,CAAC;CACR,CAAC,MAAM,WAAW,CAAC,CAAC;AAErB,KAAK,WAAW,CAAC,MAAM,IACrB,MAAM,SAAS,mBAAmB,CAAC,MAAM,OAAO,CAAC,GAC7C,OAAO,GACP,MAAM,SAAS,eAAe,CAAC,MAAM,KAAK,CAAC,GACzC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAC9B,MAAM,SAAS,gBAAgB,CAAC,MAAM,OAAO,CAAC,GAC5C,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,GACtC,KAAK,CAAC;AAkBhB,wBAAgB,4BAA4B,CAAC,WAAW,SAAS,UAAU,EAAE,MAAM,EAAE;IACnF,UAAU,EAAE,WAAW,CAAC;CACzB,GAOwB,GACpB,CAAC,IAAI,eAAe,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GACjE,CACF"}
|
|
@@ -1,13 +1,18 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
function createFieldSchema(field) {
|
|
3
|
+
if (field.kind === 'primitive') {
|
|
4
|
+
return field.type;
|
|
5
|
+
}
|
|
6
|
+
if (field.kind === 'array') {
|
|
7
|
+
return z.array(createFieldSchema(field.type));
|
|
8
|
+
}
|
|
9
|
+
const shape = Object.fromEntries(Object.entries(field.type).map(([key, nestedField]) => [key, createFieldSchema(nestedField)]));
|
|
10
|
+
return z.object(shape);
|
|
11
|
+
}
|
|
1
12
|
export function extractCreateFieldWithSystem(params) {
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (value.kind === 'primitive' && value.api?.create?.includes("Optional"))
|
|
6
|
-
return false;
|
|
7
|
-
else
|
|
8
|
-
return true;
|
|
9
|
-
}).map(([key, value]) => ([key, value.type])));
|
|
13
|
+
const createFields = Object.fromEntries(Object.entries(params.definition)
|
|
14
|
+
.filter(([, field]) => field.kind !== 'primitive' || !field.api.create.includes('Optional'))
|
|
15
|
+
.map(([key, field]) => [key, createFieldSchema(field)]));
|
|
10
16
|
return createFields;
|
|
11
17
|
}
|
|
12
|
-
;
|
|
13
18
|
//# sourceMappingURL=definition.repository.helper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.repository.helper.js","sourceRoot":"","sources":["../../src/repository/definition.repository.helper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"definition.repository.helper.js","sourceRoot":"","sources":["../../src/repository/definition.repository.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA6BxB,SAAS,iBAAiB,CAAC,KAAyB;IAClD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,IAAI,CAAC;IACpB,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAC9B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,CAC9F,CAAC;IAEF,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAiC,MAE5E;IACC,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CACrC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;SAC9B,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;SAC3F,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAC1D,CAAC;IAEF,OAAO,YAEN,CAAC;AACJ,CAAC"}
|
package/dist/spec.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { z } from
|
|
2
|
-
interface APISpecification {
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
export interface APISpecification {
|
|
3
3
|
APIEndpoint: string;
|
|
4
4
|
Method: "GET" | "POST" | "PATCH" | "DELETE" | "PUT";
|
|
5
5
|
Request: {
|
|
@@ -15,5 +15,4 @@ export interface ClientAPISpecification extends APISpecification {
|
|
|
15
15
|
}
|
|
16
16
|
export interface ServerAPISpecification extends APISpecification {
|
|
17
17
|
}
|
|
18
|
-
export {};
|
|
19
18
|
//# sourceMappingURL=spec.d.ts.map
|
package/dist/spec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpD,OAAO,EAAE;QACP,WAAW,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC;QAC3B,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC;KACrB,CAAC;IACF,QAAQ,EAAE;QACR,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;CAAG"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Definition, PrimitiveDefinition } from './model/model.define.type.js';
|
|
1
|
+
import type { Definition, PrimitiveDefinition } from './model/model.define.type.js';
|
|
2
2
|
export interface ViewDefinition {
|
|
3
3
|
baseModel: Definition;
|
|
4
4
|
viewDefinition: {
|
|
@@ -11,7 +11,7 @@ export interface ViewDefinition {
|
|
|
11
11
|
baseKey: string;
|
|
12
12
|
relationKey: string;
|
|
13
13
|
}[];
|
|
14
|
-
index?: [];
|
|
14
|
+
index?: readonly never[];
|
|
15
15
|
}
|
|
16
16
|
export declare function registerModel(params: {
|
|
17
17
|
definition: Definition;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.definition.d.ts","sourceRoot":"","sources":["../src/view.definition.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"view.definition.d.ts","sourceRoot":"","sources":["../src/view.definition.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGpF,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,UAAU,CAAC;IACtB,cAAc,EAAE;QACd,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG;YACrC,KAAK,CAAC,EAAE,UAAU,CAAC;SACpB,CAAC;KACH,CAAC;IACF,SAAS,EAAE;QACT,aAAa,EAAE,UAAU,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;KACrB,EAAE,CAAC;IACJ,KAAK,CAAC,EAAE,SAAS,KAAK,EAAE,CAAC;CAC1B;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE;IACpC,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,QAMA"}
|
package/dist/view.definition.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.definition.js","sourceRoot":"","sources":["../src/view.definition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"view.definition.js","sourceRoot":"","sources":["../src/view.definition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAmBpE,MAAM,UAAU,aAAa,CAAC,MAI7B;IACC,yBAAyB,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC,UAAU;QACxB,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eecho/definition",
|
|
3
|
-
"version": "0.0
|
|
4
|
-
"description": "EEcho
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "EEcho model definitions and shared runtime API contracts",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"exports": {
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
22
22
|
},
|
|
23
23
|
"author": "",
|
|
24
|
-
"license": "
|
|
24
|
+
"license": "MIT",
|
|
25
25
|
"peerDependencies": {
|
|
26
26
|
"zod": "^4.1.12"
|
|
27
27
|
},
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model.define.helper.d.ts","sourceRoot":"","sources":["../../src/model/model.define.helper.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,EAE7B,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model.define.helper.js","sourceRoot":"","sources":["../../src/model/model.define.helper.ts"],"names":[],"mappings":""}
|