@visulima/crud 3.0.0-alpha.1 → 3.0.0-alpha.11
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/CHANGELOG.md +165 -0
- package/LICENSE.md +22 -1
- package/README.md +29 -18
- package/dist/adapter/prisma/index.d.cts +39 -0
- package/dist/adapter/prisma/index.d.mts +39 -0
- package/dist/adapter/prisma/index.d.ts +39 -0
- package/dist/adapter/prisma/types.d.cts +31 -0
- package/dist/adapter/prisma/types.d.mts +31 -0
- package/dist/adapter/prisma/types.d.ts +31 -0
- package/dist/adapter/prisma/utils/models-to-route-names.d.cts +5 -0
- package/dist/adapter/prisma/utils/models-to-route-names.d.mts +5 -0
- package/dist/adapter/prisma/utils/models-to-route-names.d.ts +5 -0
- package/dist/adapter/prisma/utils/parse-cursor.d.cts +3 -0
- package/dist/adapter/prisma/utils/parse-cursor.d.mts +3 -0
- package/dist/adapter/prisma/utils/parse-cursor.d.ts +3 -0
- package/dist/adapter/prisma/utils/parse-order-by.d.cts +4 -0
- package/dist/adapter/prisma/utils/parse-order-by.d.mts +4 -0
- package/dist/adapter/prisma/utils/parse-order-by.d.ts +4 -0
- package/dist/adapter/prisma/utils/parse-recursive.d.cts +4 -0
- package/dist/adapter/prisma/utils/parse-recursive.d.mts +4 -0
- package/dist/adapter/prisma/utils/parse-recursive.d.ts +4 -0
- package/dist/adapter/prisma/utils/parse-where.d.cts +4 -0
- package/dist/adapter/prisma/utils/parse-where.d.mts +4 -0
- package/dist/adapter/prisma/utils/parse-where.d.ts +4 -0
- package/dist/base-crud-handler.d.cts +9 -0
- package/dist/base-crud-handler.d.mts +9 -0
- package/dist/base-crud-handler.d.ts +9 -0
- package/dist/handler/create.d.cts +3 -0
- package/dist/handler/create.d.mts +3 -0
- package/dist/handler/create.d.ts +3 -0
- package/dist/handler/delete.d.cts +3 -0
- package/dist/handler/delete.d.mts +3 -0
- package/dist/handler/delete.d.ts +3 -0
- package/dist/handler/list.d.cts +3 -0
- package/dist/handler/list.d.mts +3 -0
- package/dist/handler/list.d.ts +3 -0
- package/dist/handler/read.d.cts +3 -0
- package/dist/handler/read.d.mts +3 -0
- package/dist/handler/read.d.ts +3 -0
- package/dist/handler/update.d.cts +3 -0
- package/dist/handler/update.d.mts +3 -0
- package/dist/handler/update.d.ts +3 -0
- package/dist/index.cjs +13 -0
- package/dist/index.d.cts +6 -0
- package/dist/index.d.mts +6 -127
- package/dist/index.d.ts +6 -127
- package/dist/index.mjs +3 -1085
- package/dist/next/api/edge/index.d.cts +3 -0
- package/dist/next/api/edge/index.d.mts +3 -0
- package/dist/next/api/edge/index.d.ts +3 -0
- package/dist/next/api/node/index.d.cts +4 -0
- package/dist/next/api/node/index.d.mts +4 -0
- package/dist/next/api/node/index.d.ts +4 -0
- package/dist/next/index.cjs +11 -0
- package/dist/next/index.d.cts +2 -0
- package/dist/next/index.d.mts +2 -8
- package/dist/next/index.d.ts +2 -8
- package/dist/next/index.mjs +2 -4843
- package/dist/packem_shared/PrismaAdapter-Bd2bxZfN.mjs +318 -0
- package/dist/packem_shared/PrismaAdapter-BondygJ8.cjs +324 -0
- package/dist/packem_shared/RouteType-Bk3uAK0x.cjs +14 -0
- package/dist/packem_shared/RouteType-CB2xrWdf.mjs +10 -0
- package/dist/packem_shared/base-crud-handler-Cg8r7S9C.mjs +587 -0
- package/dist/packem_shared/base-crud-handler-DSlkMYL6.cjs +572 -0
- package/dist/packem_shared/edgeHandler-DFuv_tsd.cjs +18 -0
- package/dist/packem_shared/edgeHandler-l0sBgF0s.mjs +16 -0
- package/dist/packem_shared/get-accessible-routes-C6NF9Iry.cjs +16 -0
- package/dist/packem_shared/get-accessible-routes-sV5SDdFn.mjs +14 -0
- package/dist/packem_shared/models-to-route-names-CdwsK0V1.mjs +9 -0
- package/dist/packem_shared/models-to-route-names-Dv94PzhE.cjs +11 -0
- package/dist/{index.js → packem_shared/modelsToOpenApi-DypKlIy4.cjs} +67 -454
- package/dist/packem_shared/modelsToOpenApi-qs_cqTsd.mjs +706 -0
- package/dist/packem_shared/nodeHandler-BlXQahKv.cjs +16 -0
- package/dist/packem_shared/nodeHandler-R76tfOc6.mjs +14 -0
- package/dist/query-parser.d.cts +3 -0
- package/dist/query-parser.d.mts +3 -0
- package/dist/query-parser.d.ts +3 -0
- package/dist/swagger/adapter/prisma/index.d.cts +22 -0
- package/dist/swagger/adapter/prisma/index.d.mts +22 -0
- package/dist/swagger/adapter/prisma/index.d.ts +22 -0
- package/dist/swagger/json-schema-parser.d.cts +18 -0
- package/dist/swagger/json-schema-parser.d.mts +18 -0
- package/dist/swagger/json-schema-parser.d.ts +18 -0
- package/dist/swagger/parameters.d.cts +5 -0
- package/dist/swagger/parameters.d.mts +5 -0
- package/dist/swagger/parameters.d.ts +5 -0
- package/dist/swagger/types.d.cts +39 -0
- package/dist/swagger/types.d.mts +39 -0
- package/dist/swagger/types.d.ts +39 -0
- package/dist/swagger/utils/format-example-ref.d.cts +2 -0
- package/dist/swagger/utils/format-example-ref.d.mts +2 -0
- package/dist/swagger/utils/format-example-ref.d.ts +2 -0
- package/dist/swagger/utils/format-schema-ref.d.cts +2 -0
- package/dist/swagger/utils/format-schema-ref.d.mts +2 -0
- package/dist/swagger/utils/format-schema-ref.d.ts +2 -0
- package/dist/swagger/utils/get-models-accessible-routes.d.cts +4 -0
- package/dist/swagger/utils/get-models-accessible-routes.d.mts +4 -0
- package/dist/swagger/utils/get-models-accessible-routes.d.ts +4 -0
- package/dist/swagger/utils/get-swagger-paths.d.cts +12 -0
- package/dist/swagger/utils/get-swagger-paths.d.mts +12 -0
- package/dist/swagger/utils/get-swagger-paths.d.ts +12 -0
- package/dist/swagger/utils/get-swagger-tags.d.cts +4 -0
- package/dist/swagger/utils/get-swagger-tags.d.mts +4 -0
- package/dist/swagger/utils/get-swagger-tags.d.ts +4 -0
- package/dist/{types-C5c2M01-.d.mts → types.d.cts} +45 -52
- package/dist/{types-C5c2M01-.d.ts → types.d.mts} +45 -52
- package/dist/types.d.ts +131 -0
- package/dist/utils/format-resource-id.d.cts +2 -0
- package/dist/utils/format-resource-id.d.mts +2 -0
- package/dist/utils/format-resource-id.d.ts +2 -0
- package/dist/utils/get-accessible-routes.d.cts +3 -0
- package/dist/utils/get-accessible-routes.d.mts +3 -0
- package/dist/utils/get-accessible-routes.d.ts +3 -0
- package/dist/utils/get-resource-name-from-url.d.cts +5 -0
- package/dist/utils/get-resource-name-from-url.d.mts +5 -0
- package/dist/utils/get-resource-name-from-url.d.ts +5 -0
- package/dist/utils/get-route-type.d.cts +7 -0
- package/dist/utils/get-route-type.d.mts +7 -0
- package/dist/utils/get-route-type.d.ts +7 -0
- package/dist/utils/is-primitive.d.cts +2 -0
- package/dist/utils/is-primitive.d.mts +2 -0
- package/dist/utils/is-primitive.d.ts +2 -0
- package/dist/utils/validate-adapter-methods.d.cts +3 -0
- package/dist/utils/validate-adapter-methods.d.mts +3 -0
- package/dist/utils/validate-adapter-methods.d.ts +3 -0
- package/package.json +36 -17
- package/dist/chunk-542OFGDD.mjs +0 -73
- package/dist/chunk-542OFGDD.mjs.map +0 -1
- package/dist/chunk-AW3MPEJW.js +0 -77
- package/dist/chunk-AW3MPEJW.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/next/index.js +0 -4850
- package/dist/next/index.js.map +0 -1
- package/dist/next/index.mjs.map +0 -1
|
@@ -1,4 +1,20 @@
|
|
|
1
|
-
|
|
1
|
+
export declare enum RouteType {
|
|
2
|
+
CREATE = "CREATE",
|
|
3
|
+
DELETE = "DELETE",
|
|
4
|
+
READ_ALL = "READ_ALL",
|
|
5
|
+
READ_ONE = "READ_ONE",
|
|
6
|
+
UPDATE = "UPDATE"
|
|
7
|
+
}
|
|
8
|
+
export interface ModelOption {
|
|
9
|
+
exclude?: RouteType[];
|
|
10
|
+
formatResourceId?: (resourceId: string) => number | string;
|
|
11
|
+
name?: string;
|
|
12
|
+
only?: RouteType[];
|
|
13
|
+
}
|
|
14
|
+
export type ModelsOptions<M extends string = string> = {
|
|
15
|
+
[key in M]?: ModelOption;
|
|
16
|
+
};
|
|
17
|
+
export type CreateHandler = <T, Q, Request>(parameters: HandlerParameters<T, Q> & {
|
|
2
18
|
request: Request & {
|
|
3
19
|
body: Record<string, any>;
|
|
4
20
|
};
|
|
@@ -6,25 +22,21 @@ type Handler$4 = <T, Q, Request>(parameters: HandlerParameters<T, Q> & {
|
|
|
6
22
|
data: any;
|
|
7
23
|
status: number;
|
|
8
24
|
}>;
|
|
9
|
-
|
|
10
|
-
type Handler$3 = <T, Q>(parameters: UniqueResourceHandlerParameters<T, Q>) => Promise<{
|
|
25
|
+
export type DeleteHandler = <T, Q>(parameters: UniqueResourceHandlerParameters<T, Q>) => Promise<{
|
|
11
26
|
data: any;
|
|
12
27
|
status: number;
|
|
13
28
|
}>;
|
|
14
|
-
|
|
15
|
-
type Handler$2 = <T, Q extends ParsedQueryParameters>(parameters: HandlerParameters<T, Q> & {
|
|
16
|
-
pagination: PaginationConfig;
|
|
17
|
-
}) => Promise<{
|
|
29
|
+
export type GetHandler = <T, Q>(parameters: UniqueResourceHandlerParameters<T, Q>) => Promise<{
|
|
18
30
|
data: any;
|
|
19
31
|
status: number;
|
|
20
32
|
}>;
|
|
21
|
-
|
|
22
|
-
|
|
33
|
+
export type ListHandler = <T, Q extends ParsedQueryParameters>(parameters: HandlerParameters<T, Q> & {
|
|
34
|
+
pagination: PaginationConfig;
|
|
35
|
+
}) => Promise<{
|
|
23
36
|
data: any;
|
|
24
37
|
status: number;
|
|
25
38
|
}>;
|
|
26
|
-
|
|
27
|
-
type Handler = <T, Q, Request>(parameters: UniqueResourceHandlerParameters<T, Q> & {
|
|
39
|
+
export type UpdateHandler = <T, Q, Request>(parameters: UniqueResourceHandlerParameters<T, Q> & {
|
|
28
40
|
request: Request & {
|
|
29
41
|
body: Partial<T>;
|
|
30
42
|
};
|
|
@@ -32,51 +44,34 @@ type Handler = <T, Q, Request>(parameters: UniqueResourceHandlerParameters<T, Q>
|
|
|
32
44
|
data: any;
|
|
33
45
|
status: number;
|
|
34
46
|
}>;
|
|
35
|
-
|
|
36
|
-
declare enum RouteType {
|
|
37
|
-
CREATE = "CREATE",
|
|
38
|
-
DELETE = "DELETE",
|
|
39
|
-
READ_ALL = "READ_ALL",
|
|
40
|
-
READ_ONE = "READ_ONE",
|
|
41
|
-
UPDATE = "UPDATE"
|
|
42
|
-
}
|
|
43
|
-
interface ModelOption {
|
|
44
|
-
exclude?: RouteType[];
|
|
45
|
-
formatResourceId?: (resourceId: string) => number | string;
|
|
46
|
-
name?: string;
|
|
47
|
-
only?: RouteType[];
|
|
48
|
-
}
|
|
49
|
-
type ModelsOptions<M extends string = string> = {
|
|
50
|
-
[key in M]?: ModelOption;
|
|
51
|
-
};
|
|
52
|
-
interface HandlerOptions<M extends string = string> {
|
|
47
|
+
export interface HandlerOptions<M extends string = string> {
|
|
53
48
|
exposeStrategy?: "all" | "none";
|
|
54
49
|
formatResourceId?: (resourceId: string) => number | string;
|
|
55
50
|
handlers?: {
|
|
56
|
-
create?:
|
|
57
|
-
delete?:
|
|
58
|
-
get?:
|
|
59
|
-
list?:
|
|
60
|
-
update?:
|
|
51
|
+
create?: CreateHandler;
|
|
52
|
+
delete?: DeleteHandler;
|
|
53
|
+
get?: GetHandler;
|
|
54
|
+
list?: ListHandler;
|
|
55
|
+
update?: UpdateHandler;
|
|
61
56
|
};
|
|
62
57
|
models?: ModelsOptions<M>;
|
|
63
58
|
pagination?: PaginationConfig;
|
|
64
59
|
}
|
|
65
|
-
interface PaginationConfig {
|
|
60
|
+
export interface PaginationConfig {
|
|
66
61
|
perPage: number;
|
|
67
62
|
}
|
|
68
|
-
interface HandlerParameters<T, Q> {
|
|
63
|
+
export interface HandlerParameters<T, Q> {
|
|
69
64
|
adapter: Adapter<T, Q>;
|
|
70
65
|
query: Q;
|
|
71
66
|
resourceName: string;
|
|
72
67
|
}
|
|
73
|
-
interface UniqueResourceHandlerParameters<T, Q> {
|
|
68
|
+
export interface UniqueResourceHandlerParameters<T, Q> {
|
|
74
69
|
adapter: Adapter<T, Q>;
|
|
75
70
|
query: Q;
|
|
76
71
|
resourceId: number | string;
|
|
77
72
|
resourceName: string;
|
|
78
73
|
}
|
|
79
|
-
interface Adapter<T, Q, M extends string = string> {
|
|
74
|
+
export interface Adapter<T, Q, M extends string = string> {
|
|
80
75
|
connect?: () => Promise<void>;
|
|
81
76
|
create: (resourceName: M, data: any, query: Q) => Promise<T>;
|
|
82
77
|
delete: (resourceName: M, resourceId: number | string, query: Q) => Promise<T>;
|
|
@@ -94,28 +89,28 @@ interface Adapter<T, Q, M extends string = string> {
|
|
|
94
89
|
parseQuery: (resourceName: M, query: ParsedQueryParameters) => Q;
|
|
95
90
|
update: (resourceName: M, resourceId: number | string, data: any, query: Q) => Promise<T>;
|
|
96
91
|
}
|
|
97
|
-
interface PaginationData {
|
|
92
|
+
export interface PaginationData {
|
|
98
93
|
page: number;
|
|
99
94
|
pageCount: number;
|
|
100
95
|
total: number;
|
|
101
96
|
}
|
|
102
|
-
type RecursiveField = Record<string, Record<string, boolean> | boolean>;
|
|
103
|
-
type WhereOperator = "$cont" | "$ends" | "$eq" | "$gt" | "$gte" | "$in" | "$isnull" | "$lt" | "$lte" | "$neq" | "$notin" | "$starts";
|
|
104
|
-
type SearchCondition = Date | boolean | number | string | null;
|
|
105
|
-
type WhereCondition = {
|
|
97
|
+
export type RecursiveField = Record<string, Record<string, boolean> | boolean>;
|
|
98
|
+
export type WhereOperator = "$cont" | "$ends" | "$eq" | "$gt" | "$gte" | "$in" | "$isnull" | "$lt" | "$lte" | "$neq" | "$notin" | "$starts";
|
|
99
|
+
export type SearchCondition = Date | boolean | number | string | null;
|
|
100
|
+
export type WhereCondition = {
|
|
106
101
|
[key in WhereOperator]?: SearchCondition;
|
|
107
102
|
};
|
|
108
|
-
type Condition = {
|
|
103
|
+
export type Condition = {
|
|
109
104
|
[key: string]: Condition | SearchCondition | WhereCondition;
|
|
110
105
|
};
|
|
111
|
-
type WhereField = Condition & {
|
|
106
|
+
export type WhereField = Condition & {
|
|
112
107
|
$and?: Condition | Condition[];
|
|
113
108
|
$not?: Condition | Condition[];
|
|
114
109
|
$or?: Condition | Condition[];
|
|
115
110
|
};
|
|
116
|
-
type OrderByOperator = "$asc" | "$desc";
|
|
117
|
-
type OrderByField = Record<string, OrderByOperator>;
|
|
118
|
-
interface ParsedQueryParameters {
|
|
111
|
+
export type OrderByOperator = "$asc" | "$desc";
|
|
112
|
+
export type OrderByField = Record<string, OrderByOperator>;
|
|
113
|
+
export interface ParsedQueryParameters {
|
|
119
114
|
distinct?: string;
|
|
120
115
|
include?: RecursiveField;
|
|
121
116
|
limit?: number | undefined;
|
|
@@ -126,13 +121,11 @@ interface ParsedQueryParameters {
|
|
|
126
121
|
skip?: number | undefined;
|
|
127
122
|
where?: WhereField;
|
|
128
123
|
}
|
|
129
|
-
type ExecuteHandler<Request, Response> = (request: Request, response: Response) => Promise<void>;
|
|
130
|
-
interface FakePrismaClient {
|
|
124
|
+
export type ExecuteHandler<Request, Response> = (request: Request, response: Response) => Promise<void>;
|
|
125
|
+
export interface FakePrismaClient {
|
|
131
126
|
$connect: () => void;
|
|
132
127
|
$disconnect: () => Promise<void>;
|
|
133
128
|
[key: string]: any;
|
|
134
129
|
_dmmf?: any;
|
|
135
130
|
_getDmmf?: () => any;
|
|
136
131
|
}
|
|
137
|
-
|
|
138
|
-
export { type Adapter as A, type Condition as C, type ExecuteHandler as E, type FakePrismaClient as F, type HandlerOptions as H, type ModelsOptions as M, type OrderByField as O, type PaginationData as P, RouteType as R, type SearchCondition as S, type UniqueResourceHandlerParameters as U, type WhereCondition as W, type ParsedQueryParameters as a, type HandlerParameters as b, type ModelOption as c, type OrderByOperator as d, type PaginationConfig as e, type RecursiveField as f, type WhereField as g, type WhereOperator as h };
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
export declare enum RouteType {
|
|
2
|
+
CREATE = "CREATE",
|
|
3
|
+
DELETE = "DELETE",
|
|
4
|
+
READ_ALL = "READ_ALL",
|
|
5
|
+
READ_ONE = "READ_ONE",
|
|
6
|
+
UPDATE = "UPDATE"
|
|
7
|
+
}
|
|
8
|
+
export interface ModelOption {
|
|
9
|
+
exclude?: RouteType[];
|
|
10
|
+
formatResourceId?: (resourceId: string) => number | string;
|
|
11
|
+
name?: string;
|
|
12
|
+
only?: RouteType[];
|
|
13
|
+
}
|
|
14
|
+
export type ModelsOptions<M extends string = string> = {
|
|
15
|
+
[key in M]?: ModelOption;
|
|
16
|
+
};
|
|
17
|
+
export type CreateHandler = <T, Q, Request>(parameters: HandlerParameters<T, Q> & {
|
|
18
|
+
request: Request & {
|
|
19
|
+
body: Record<string, any>;
|
|
20
|
+
};
|
|
21
|
+
}) => Promise<{
|
|
22
|
+
data: any;
|
|
23
|
+
status: number;
|
|
24
|
+
}>;
|
|
25
|
+
export type DeleteHandler = <T, Q>(parameters: UniqueResourceHandlerParameters<T, Q>) => Promise<{
|
|
26
|
+
data: any;
|
|
27
|
+
status: number;
|
|
28
|
+
}>;
|
|
29
|
+
export type GetHandler = <T, Q>(parameters: UniqueResourceHandlerParameters<T, Q>) => Promise<{
|
|
30
|
+
data: any;
|
|
31
|
+
status: number;
|
|
32
|
+
}>;
|
|
33
|
+
export type ListHandler = <T, Q extends ParsedQueryParameters>(parameters: HandlerParameters<T, Q> & {
|
|
34
|
+
pagination: PaginationConfig;
|
|
35
|
+
}) => Promise<{
|
|
36
|
+
data: any;
|
|
37
|
+
status: number;
|
|
38
|
+
}>;
|
|
39
|
+
export type UpdateHandler = <T, Q, Request>(parameters: UniqueResourceHandlerParameters<T, Q> & {
|
|
40
|
+
request: Request & {
|
|
41
|
+
body: Partial<T>;
|
|
42
|
+
};
|
|
43
|
+
}) => Promise<{
|
|
44
|
+
data: any;
|
|
45
|
+
status: number;
|
|
46
|
+
}>;
|
|
47
|
+
export interface HandlerOptions<M extends string = string> {
|
|
48
|
+
exposeStrategy?: "all" | "none";
|
|
49
|
+
formatResourceId?: (resourceId: string) => number | string;
|
|
50
|
+
handlers?: {
|
|
51
|
+
create?: CreateHandler;
|
|
52
|
+
delete?: DeleteHandler;
|
|
53
|
+
get?: GetHandler;
|
|
54
|
+
list?: ListHandler;
|
|
55
|
+
update?: UpdateHandler;
|
|
56
|
+
};
|
|
57
|
+
models?: ModelsOptions<M>;
|
|
58
|
+
pagination?: PaginationConfig;
|
|
59
|
+
}
|
|
60
|
+
export interface PaginationConfig {
|
|
61
|
+
perPage: number;
|
|
62
|
+
}
|
|
63
|
+
export interface HandlerParameters<T, Q> {
|
|
64
|
+
adapter: Adapter<T, Q>;
|
|
65
|
+
query: Q;
|
|
66
|
+
resourceName: string;
|
|
67
|
+
}
|
|
68
|
+
export interface UniqueResourceHandlerParameters<T, Q> {
|
|
69
|
+
adapter: Adapter<T, Q>;
|
|
70
|
+
query: Q;
|
|
71
|
+
resourceId: number | string;
|
|
72
|
+
resourceName: string;
|
|
73
|
+
}
|
|
74
|
+
export interface Adapter<T, Q, M extends string = string> {
|
|
75
|
+
connect?: () => Promise<void>;
|
|
76
|
+
create: (resourceName: M, data: any, query: Q) => Promise<T>;
|
|
77
|
+
delete: (resourceName: M, resourceId: number | string, query: Q) => Promise<T>;
|
|
78
|
+
disconnect?: () => Promise<void>;
|
|
79
|
+
getAll: (resourceName: M, query: Q) => Promise<T[]>;
|
|
80
|
+
getModels: () => M[];
|
|
81
|
+
getOne: (resourceName: M, resourceId: number | string, query: Q) => Promise<T>;
|
|
82
|
+
getPaginationData: (resourceName: M, query: Q) => Promise<PaginationData>;
|
|
83
|
+
handleError?: (error: Error) => void;
|
|
84
|
+
init?: () => Promise<void>;
|
|
85
|
+
mapModelsToRouteNames?: () => Promise<{
|
|
86
|
+
[key in M]?: string;
|
|
87
|
+
}>;
|
|
88
|
+
models?: M[];
|
|
89
|
+
parseQuery: (resourceName: M, query: ParsedQueryParameters) => Q;
|
|
90
|
+
update: (resourceName: M, resourceId: number | string, data: any, query: Q) => Promise<T>;
|
|
91
|
+
}
|
|
92
|
+
export interface PaginationData {
|
|
93
|
+
page: number;
|
|
94
|
+
pageCount: number;
|
|
95
|
+
total: number;
|
|
96
|
+
}
|
|
97
|
+
export type RecursiveField = Record<string, Record<string, boolean> | boolean>;
|
|
98
|
+
export type WhereOperator = "$cont" | "$ends" | "$eq" | "$gt" | "$gte" | "$in" | "$isnull" | "$lt" | "$lte" | "$neq" | "$notin" | "$starts";
|
|
99
|
+
export type SearchCondition = Date | boolean | number | string | null;
|
|
100
|
+
export type WhereCondition = {
|
|
101
|
+
[key in WhereOperator]?: SearchCondition;
|
|
102
|
+
};
|
|
103
|
+
export type Condition = {
|
|
104
|
+
[key: string]: Condition | SearchCondition | WhereCondition;
|
|
105
|
+
};
|
|
106
|
+
export type WhereField = Condition & {
|
|
107
|
+
$and?: Condition | Condition[];
|
|
108
|
+
$not?: Condition | Condition[];
|
|
109
|
+
$or?: Condition | Condition[];
|
|
110
|
+
};
|
|
111
|
+
export type OrderByOperator = "$asc" | "$desc";
|
|
112
|
+
export type OrderByField = Record<string, OrderByOperator>;
|
|
113
|
+
export interface ParsedQueryParameters {
|
|
114
|
+
distinct?: string;
|
|
115
|
+
include?: RecursiveField;
|
|
116
|
+
limit?: number | undefined;
|
|
117
|
+
orderBy?: OrderByField;
|
|
118
|
+
originalQuery?: Record<string, any>;
|
|
119
|
+
page?: number | undefined;
|
|
120
|
+
select?: RecursiveField;
|
|
121
|
+
skip?: number | undefined;
|
|
122
|
+
where?: WhereField;
|
|
123
|
+
}
|
|
124
|
+
export type ExecuteHandler<Request, Response> = (request: Request, response: Response) => Promise<void>;
|
|
125
|
+
export interface FakePrismaClient {
|
|
126
|
+
$connect: () => void;
|
|
127
|
+
$disconnect: () => Promise<void>;
|
|
128
|
+
[key: string]: any;
|
|
129
|
+
_dmmf?: any;
|
|
130
|
+
_getDmmf?: () => any;
|
|
131
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visulima/crud",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "3.0.0-alpha.11",
|
|
4
|
+
"description": "A comprehensive CRUD library for building RESTful APIs with Prisma, providing automatic CRUD operations, filtering, sorting, and pagination.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"anolilab",
|
|
7
7
|
"visulima",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"crud",
|
|
11
11
|
"prisma"
|
|
12
12
|
],
|
|
13
|
-
"homepage": "https://
|
|
13
|
+
"homepage": "https://visulima.com/packages/crud/",
|
|
14
14
|
"repository": {
|
|
15
15
|
"type": "git",
|
|
16
16
|
"url": "https://github.com/visulima/visulima.git",
|
|
@@ -34,30 +34,40 @@
|
|
|
34
34
|
"sideEffects": false,
|
|
35
35
|
"exports": {
|
|
36
36
|
".": {
|
|
37
|
-
"require": {
|
|
38
|
-
"types": "./dist/index.d.ts",
|
|
39
|
-
"default": "./dist/index.js"
|
|
40
|
-
},
|
|
41
37
|
"import": {
|
|
42
38
|
"types": "./dist/index.d.mts",
|
|
43
39
|
"default": "./dist/index.mjs"
|
|
40
|
+
},
|
|
41
|
+
"require": {
|
|
42
|
+
"types": "./dist/index.d.cts",
|
|
43
|
+
"default": "./dist/index.cjs"
|
|
44
44
|
}
|
|
45
45
|
},
|
|
46
46
|
"./next": {
|
|
47
|
-
"require": {
|
|
48
|
-
"types": "./dist/next/index.d.ts",
|
|
49
|
-
"default": "./dist/next/index.js"
|
|
50
|
-
},
|
|
51
47
|
"import": {
|
|
52
48
|
"types": "./dist/next/index.d.mts",
|
|
53
49
|
"default": "./dist/next/index.mjs"
|
|
50
|
+
},
|
|
51
|
+
"require": {
|
|
52
|
+
"types": "./dist/next/index.d.cts",
|
|
53
|
+
"default": "./dist/next/index.cjs"
|
|
54
54
|
}
|
|
55
55
|
},
|
|
56
56
|
"./package.json": "./package.json"
|
|
57
57
|
},
|
|
58
|
-
"main": "dist/index.
|
|
58
|
+
"main": "dist/index.cjs",
|
|
59
59
|
"module": "dist/index.mjs",
|
|
60
|
-
"types": "dist/index.d.
|
|
60
|
+
"types": "dist/index.d.cts",
|
|
61
|
+
"typesVersions": {
|
|
62
|
+
">=5.0": {
|
|
63
|
+
".": [
|
|
64
|
+
"./dist/index.d.ts"
|
|
65
|
+
],
|
|
66
|
+
"next": [
|
|
67
|
+
"./dist/next/index.d.ts"
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
},
|
|
61
71
|
"files": [
|
|
62
72
|
"dist/**",
|
|
63
73
|
"README.md",
|
|
@@ -65,13 +75,22 @@
|
|
|
65
75
|
"LICENSE.md"
|
|
66
76
|
],
|
|
67
77
|
"dependencies": {
|
|
68
|
-
"@visulima/pagination": "5.0.0-alpha.
|
|
69
|
-
"@visulima/prisma-dmmf-transformer": "3.0.0-alpha.
|
|
78
|
+
"@visulima/pagination": "5.0.0-alpha.10",
|
|
79
|
+
"@visulima/prisma-dmmf-transformer": "3.0.0-alpha.10",
|
|
70
80
|
"http-errors": "^2.0.1",
|
|
71
|
-
"path-to-regexp": "
|
|
81
|
+
"path-to-regexp": "8.4.2"
|
|
82
|
+
},
|
|
83
|
+
"peerDependencies": {
|
|
84
|
+
"@prisma/client": "^3.0.0 || ^4.0.0",
|
|
85
|
+
"next": ">=12.0 || >=13.0 || >=14.0 || >=15.0"
|
|
86
|
+
},
|
|
87
|
+
"peerDependenciesMeta": {
|
|
88
|
+
"next": {
|
|
89
|
+
"optional": true
|
|
90
|
+
}
|
|
72
91
|
},
|
|
73
92
|
"engines": {
|
|
74
|
-
"node": "
|
|
93
|
+
"node": "^22.14.0 || >=24.10.0"
|
|
75
94
|
},
|
|
76
95
|
"os": [
|
|
77
96
|
"darwin",
|
package/dist/chunk-542OFGDD.mjs
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import path from 'path';
|
|
2
|
-
import { fileURLToPath } from 'url';
|
|
3
|
-
|
|
4
|
-
var __create = Object.create;
|
|
5
|
-
var __defProp = Object.defineProperty;
|
|
6
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
9
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
-
var __esm = (fn, res) => function __init() {
|
|
11
|
-
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
12
|
-
};
|
|
13
|
-
var __commonJS = (cb, mod) => function __require() {
|
|
14
|
-
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
15
|
-
};
|
|
16
|
-
var __export = (target, all) => {
|
|
17
|
-
for (var name in all)
|
|
18
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
19
|
-
};
|
|
20
|
-
var __copyProps = (to, from, except, desc) => {
|
|
21
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
22
|
-
for (let key of __getOwnPropNames(from))
|
|
23
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
24
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
25
|
-
}
|
|
26
|
-
return to;
|
|
27
|
-
};
|
|
28
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
29
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
30
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
31
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
32
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
33
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
34
|
-
mod
|
|
35
|
-
));
|
|
36
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
37
|
-
var getFilename, getDirname, __dirname$1;
|
|
38
|
-
var init_esm_shims = __esm({
|
|
39
|
-
"../../../node_modules/.pnpm/tsup@8.5.1_@swc+core@1.13.5_jiti@2.6.1_postcss@8.5.6_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/esm_shims.js"() {
|
|
40
|
-
getFilename = () => fileURLToPath(import.meta.url);
|
|
41
|
-
getDirname = () => path.dirname(getFilename());
|
|
42
|
-
__dirname$1 = /* @__PURE__ */ getDirname();
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
// src/types.ts
|
|
47
|
-
init_esm_shims();
|
|
48
|
-
var RouteType = /* @__PURE__ */ ((RouteType2) => {
|
|
49
|
-
RouteType2["CREATE"] = "CREATE";
|
|
50
|
-
RouteType2["DELETE"] = "DELETE";
|
|
51
|
-
RouteType2["READ_ALL"] = "READ_ALL";
|
|
52
|
-
RouteType2["READ_ONE"] = "READ_ONE";
|
|
53
|
-
RouteType2["UPDATE"] = "UPDATE";
|
|
54
|
-
return RouteType2;
|
|
55
|
-
})(RouteType || {});
|
|
56
|
-
|
|
57
|
-
// src/utils/get-accessible-routes.ts
|
|
58
|
-
init_esm_shims();
|
|
59
|
-
var getAccessibleRoutes = (only, exclude, defaultExposeStrategy = "all") => {
|
|
60
|
-
let accessibleRoutes = defaultExposeStrategy === "none" ? [] : ["READ_ALL" /* READ_ALL */, "READ_ONE" /* READ_ONE */, "UPDATE" /* UPDATE */, "DELETE" /* DELETE */, "CREATE" /* CREATE */];
|
|
61
|
-
if (Array.isArray(only)) {
|
|
62
|
-
accessibleRoutes = only;
|
|
63
|
-
}
|
|
64
|
-
if (exclude?.length) {
|
|
65
|
-
accessibleRoutes = accessibleRoutes.filter((element) => !exclude.includes(element));
|
|
66
|
-
}
|
|
67
|
-
return accessibleRoutes;
|
|
68
|
-
};
|
|
69
|
-
var get_accessible_routes_default = getAccessibleRoutes;
|
|
70
|
-
|
|
71
|
-
export { RouteType, __commonJS, __dirname$1 as __dirname, __esm, __export, __toCommonJS, __toESM, get_accessible_routes_default, init_esm_shims };
|
|
72
|
-
//# sourceMappingURL=chunk-542OFGDD.mjs.map
|
|
73
|
-
//# sourceMappingURL=chunk-542OFGDD.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../node_modules/.pnpm/tsup@8.5.1_@swc+core@1.13.5_jiti@2.6.1_postcss@8.5.6_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/esm_shims.js","../src/types.ts","../src/utils/get-accessible-routes.ts"],"names":["__dirname","RouteType"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAIM,aACA,UAAA,CAAA,CAEOA;AAPb,IAAA,cAAA,GAAA,KAAA,CAAA;AAAA,EAAA,+JAAA,GAAA;AAIA,IAAM,WAAA,GAAc,MAAM,aAAA,CAAc,MAAA,CAAA,IAAA,CAAY,GAAG,CAAA;AACvD,IAAM,UAAA,GAAa,MAAM,IAAA,CAAK,OAAA,CAAQ,aAAa,CAAA;AAE5C,IAAMA,8BAA4B,UAAA,EAAW;AAAA,EAAA;AAAA,CAAA;;;ACPpD,cAAA,EAAA;AAMO,IAAK,SAAA,qBAAAC,UAAAA,KAAL;AACH,EAAAA,WAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,WAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,WAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,WAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,WAAA,QAAA,CAAA,GAAS,QAAA;AALD,EAAA,OAAAA,UAAAA;AAAA,CAAA,EAAA,SAAA,IAAA,EAAA;;;ACNZ,cAAA,EAAA;AAEA,IAAM,mBAAA,GAAsB,CAAC,IAAA,EAAoB,OAAA,EAAuB,wBAAwC,KAAA,KAAuB;AACnI,EAAA,IAAI,gBAAA,GACE,qBAAA,KAA0B,MAAA,GAAS,KAAK,CAAA,UAAA,iBAAA,UAAA,iBAAA,QAAA,eAAA,QAAA,eAAA,QAAA,cAA6F;AAE3I,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AACrB,IAAA,gBAAA,GAAmB,IAAA;AAAA,EACvB;AAEA,EAAA,IAAI,SAAS,MAAA,EAAQ;AACjB,IAAA,gBAAA,GAAmB,gBAAA,CAAiB,OAAO,CAAC,OAAA,KAAY,CAAC,OAAA,CAAQ,QAAA,CAAS,OAAO,CAAC,CAAA;AAAA,EACtF;AAEA,EAAA,OAAO,gBAAA;AACX,CAAA;AAEA,IAAO,6BAAA,GAAQ","file":"chunk-542OFGDD.mjs","sourcesContent":["// Shim globals in esm bundle\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n","import type { Handler as CreateHandler } from \"./handler/create\";\nimport type { Handler as DeleteHandler } from \"./handler/delete\";\nimport type { Handler as ListHandler } from \"./handler/list\";\nimport type { Handler as GetHandler } from \"./handler/read\";\nimport type { Handler as UpdateHandler } from \"./handler/update\";\n\nexport enum RouteType {\n CREATE = \"CREATE\",\n DELETE = \"DELETE\",\n READ_ALL = \"READ_ALL\",\n READ_ONE = \"READ_ONE\",\n UPDATE = \"UPDATE\",\n}\n\nexport interface ModelOption {\n exclude?: RouteType[];\n formatResourceId?: (resourceId: string) => number | string;\n name?: string;\n only?: RouteType[];\n}\n\nexport type ModelsOptions<M extends string = string> = {\n [key in M]?: ModelOption;\n};\n\nexport interface HandlerOptions<M extends string = string> {\n exposeStrategy?: \"all\" | \"none\";\n formatResourceId?: (resourceId: string) => number | string;\n handlers?: {\n create?: CreateHandler;\n delete?: DeleteHandler;\n get?: GetHandler;\n list?: ListHandler;\n update?: UpdateHandler;\n };\n models?: ModelsOptions<M>;\n pagination?: PaginationConfig;\n}\n\nexport interface PaginationConfig {\n perPage: number;\n}\n\nexport interface HandlerParameters<T, Q> {\n adapter: Adapter<T, Q>;\n query: Q;\n resourceName: string;\n}\n\nexport interface UniqueResourceHandlerParameters<T, Q> {\n adapter: Adapter<T, Q>;\n query: Q;\n resourceId: number | string;\n resourceName: string;\n}\n\nexport interface Adapter<T, Q, M extends string = string> {\n connect?: () => Promise<void>;\n create: (resourceName: M, data: any, query: Q) => Promise<T>;\n delete: (resourceName: M, resourceId: number | string, query: Q) => Promise<T>;\n disconnect?: () => Promise<void>;\n getAll: (resourceName: M, query: Q) => Promise<T[]>;\n getModels: () => M[];\n getOne: (resourceName: M, resourceId: number | string, query: Q) => Promise<T>;\n getPaginationData: (resourceName: M, query: Q) => Promise<PaginationData>;\n handleError?: (error: Error) => void;\n init?: () => Promise<void>;\n mapModelsToRouteNames?: () => Promise<{ [key in M]?: string }>;\n models?: M[];\n parseQuery: (resourceName: M, query: ParsedQueryParameters) => Q;\n update: (resourceName: M, resourceId: number | string, data: any, query: Q) => Promise<T>;\n}\n\nexport interface PaginationData {\n page: number;\n pageCount: number;\n total: number;\n}\n\nexport type RecursiveField = Record<string, Record<string, boolean> | boolean>;\n\nexport type WhereOperator = \"$cont\" | \"$ends\" | \"$eq\" | \"$gt\" | \"$gte\" | \"$in\" | \"$isnull\" | \"$lt\" | \"$lte\" | \"$neq\" | \"$notin\" | \"$starts\";\n\nexport type SearchCondition = Date | boolean | number | string | null;\n\nexport type WhereCondition = {\n [key in WhereOperator]?: SearchCondition;\n};\n\nexport type Condition = { [key: string]: Condition | SearchCondition | WhereCondition };\n\nexport type WhereField = Condition & {\n $and?: Condition | Condition[];\n $not?: Condition | Condition[];\n $or?: Condition | Condition[];\n};\n\nexport type OrderByOperator = \"$asc\" | \"$desc\";\n\nexport type OrderByField = Record<string, OrderByOperator>;\n\nexport interface ParsedQueryParameters {\n distinct?: string;\n include?: RecursiveField;\n limit?: number | undefined;\n orderBy?: OrderByField;\n originalQuery?: Record<string, any>;\n page?: number | undefined;\n select?: RecursiveField;\n skip?: number | undefined;\n where?: WhereField;\n}\n\nexport type ExecuteHandler<Request, Response> = (request: Request, response: Response) => Promise<void>;\n\nexport interface FakePrismaClient {\n $connect: () => void;\n $disconnect: () => Promise<void>;\n [key: string]: any;\n _dmmf?: any;\n\n _getDmmf?: () => any;\n}\n","import { RouteType } from \"../types\";\n\nconst getAccessibleRoutes = (only?: RouteType[], exclude?: RouteType[], defaultExposeStrategy: \"all\" | \"none\" = \"all\"): RouteType[] => {\n let accessibleRoutes: RouteType[]\n = defaultExposeStrategy === \"none\" ? [] : [RouteType.READ_ALL, RouteType.READ_ONE, RouteType.UPDATE, RouteType.DELETE, RouteType.CREATE];\n\n if (Array.isArray(only)) {\n accessibleRoutes = only;\n }\n\n if (exclude?.length) {\n accessibleRoutes = accessibleRoutes.filter((element) => !exclude.includes(element));\n }\n\n return accessibleRoutes;\n};\n\nexport default getAccessibleRoutes;\n"]}
|