@visulima/crud 2.0.46 → 3.0.0-alpha.10
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 +162 -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 +11 -0
- package/dist/handler/create.d.mts +11 -0
- package/dist/handler/create.d.ts +11 -0
- package/dist/handler/delete.d.cts +7 -0
- package/dist/handler/delete.d.mts +7 -0
- package/dist/handler/delete.d.ts +7 -0
- package/dist/handler/list.d.cts +9 -0
- package/dist/handler/list.d.mts +9 -0
- package/dist/handler/list.d.ts +9 -0
- package/dist/handler/read.d.cts +7 -0
- package/dist/handler/read.d.mts +7 -0
- package/dist/handler/read.d.ts +7 -0
- package/dist/handler/update.d.cts +11 -0
- package/dist/handler/update.d.mts +11 -0
- package/dist/handler/update.d.ts +11 -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 -4832
- package/dist/packem_shared/PrismaAdapter-BTCwgMow.cjs +324 -0
- package/dist/packem_shared/PrismaAdapter-dVBZvBOv.mjs +318 -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-B3eCO4up.cjs +572 -0
- package/dist/packem_shared/base-crud-handler-DgrOMhoH.mjs +587 -0
- package/dist/packem_shared/edgeHandler-B4JJXPUI.mjs +16 -0
- package/dist/packem_shared/edgeHandler-CDFgDdrG.cjs +18 -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-BuGL_l3R.cjs} +66 -453
- package/dist/packem_shared/modelsToOpenApi-Bux3khmh.mjs +706 -0
- package/dist/packem_shared/nodeHandler-BUWSKNyo.cjs +16 -0
- package/dist/packem_shared/nodeHandler-DSq7vHzv.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.d.cts +106 -0
- package/dist/types.d.mts +106 -0
- package/dist/types.d.ts +106 -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 +38 -19
- package/dist/chunk-5I2B5KQG.js +0 -77
- package/dist/chunk-5I2B5KQG.js.map +0 -1
- package/dist/chunk-LBXJKEOF.mjs +0 -73
- package/dist/chunk-LBXJKEOF.mjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/next/index.js +0 -4839
- package/dist/next/index.js.map +0 -1
- package/dist/next/index.mjs.map +0 -1
- package/dist/types-C5c2M01-.d.mts +0 -138
- package/dist/types-C5c2M01-.d.ts +0 -138
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { b as baseHandler } from './base-crud-handler-DgrOMhoH.mjs';
|
|
2
|
+
|
|
3
|
+
const handler = async (adapter, options) => await baseHandler(
|
|
4
|
+
async (response, responseConfig) => {
|
|
5
|
+
response.status(responseConfig.status).send(responseConfig.data);
|
|
6
|
+
},
|
|
7
|
+
async (response) => {
|
|
8
|
+
response.end();
|
|
9
|
+
},
|
|
10
|
+
adapter,
|
|
11
|
+
options
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
export { handler as default };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { OpenAPIV3 } from "openapi-types";
|
|
2
|
+
import type { FakePrismaClient, ModelsOptions } from "../../../types.d.cts";
|
|
3
|
+
import type { SwaggerModelsConfig } from "../../types.d.cts";
|
|
4
|
+
declare const modelsToOpenApi: <M extends string = string, PrismaClient = FakePrismaClient>({ crud, defaultExposeStrategy, models: ctorModels, prismaClient, swagger, }: ModelsToOpenApiParameters<M, PrismaClient>) => Promise<{
|
|
5
|
+
examples: Record<string, OpenAPIV3.ExampleObject | OpenAPIV3.ReferenceObject>;
|
|
6
|
+
paths: OpenAPIV3.PathsObject;
|
|
7
|
+
schemas: Record<string, OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject>;
|
|
8
|
+
tags: OpenAPIV3.TagObject[];
|
|
9
|
+
}>;
|
|
10
|
+
export interface ModelsToOpenApiParameters<M extends string, PrismaClient> {
|
|
11
|
+
crud?: {
|
|
12
|
+
models: ModelsOptions<M>;
|
|
13
|
+
};
|
|
14
|
+
defaultExposeStrategy?: "all" | "none";
|
|
15
|
+
models?: M[];
|
|
16
|
+
prismaClient: FakePrismaClient & PrismaClient;
|
|
17
|
+
swagger?: Partial<{
|
|
18
|
+
allowedMediaTypes: Record<string, boolean>;
|
|
19
|
+
models: SwaggerModelsConfig<M>;
|
|
20
|
+
}>;
|
|
21
|
+
}
|
|
22
|
+
export = modelsToOpenApi;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { OpenAPIV3 } from "openapi-types";
|
|
2
|
+
import type { FakePrismaClient, ModelsOptions } from "../../../types.d.mts";
|
|
3
|
+
import type { SwaggerModelsConfig } from "../../types.d.mts";
|
|
4
|
+
declare const modelsToOpenApi: <M extends string = string, PrismaClient = FakePrismaClient>({ crud, defaultExposeStrategy, models: ctorModels, prismaClient, swagger, }: ModelsToOpenApiParameters<M, PrismaClient>) => Promise<{
|
|
5
|
+
examples: Record<string, OpenAPIV3.ExampleObject | OpenAPIV3.ReferenceObject>;
|
|
6
|
+
paths: OpenAPIV3.PathsObject;
|
|
7
|
+
schemas: Record<string, OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject>;
|
|
8
|
+
tags: OpenAPIV3.TagObject[];
|
|
9
|
+
}>;
|
|
10
|
+
export interface ModelsToOpenApiParameters<M extends string, PrismaClient> {
|
|
11
|
+
crud?: {
|
|
12
|
+
models: ModelsOptions<M>;
|
|
13
|
+
};
|
|
14
|
+
defaultExposeStrategy?: "all" | "none";
|
|
15
|
+
models?: M[];
|
|
16
|
+
prismaClient: FakePrismaClient & PrismaClient;
|
|
17
|
+
swagger?: Partial<{
|
|
18
|
+
allowedMediaTypes: Record<string, boolean>;
|
|
19
|
+
models: SwaggerModelsConfig<M>;
|
|
20
|
+
}>;
|
|
21
|
+
}
|
|
22
|
+
export default modelsToOpenApi;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { OpenAPIV3 } from "openapi-types";
|
|
2
|
+
import type { FakePrismaClient, ModelsOptions } from "../../../types.d.ts";
|
|
3
|
+
import type { SwaggerModelsConfig } from "../../types.d.ts";
|
|
4
|
+
declare const modelsToOpenApi: <M extends string = string, PrismaClient = FakePrismaClient>({ crud, defaultExposeStrategy, models: ctorModels, prismaClient, swagger, }: ModelsToOpenApiParameters<M, PrismaClient>) => Promise<{
|
|
5
|
+
examples: Record<string, OpenAPIV3.ExampleObject | OpenAPIV3.ReferenceObject>;
|
|
6
|
+
paths: OpenAPIV3.PathsObject;
|
|
7
|
+
schemas: Record<string, OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject>;
|
|
8
|
+
tags: OpenAPIV3.TagObject[];
|
|
9
|
+
}>;
|
|
10
|
+
export interface ModelsToOpenApiParameters<M extends string, PrismaClient> {
|
|
11
|
+
crud?: {
|
|
12
|
+
models: ModelsOptions<M>;
|
|
13
|
+
};
|
|
14
|
+
defaultExposeStrategy?: "all" | "none";
|
|
15
|
+
models?: M[];
|
|
16
|
+
prismaClient: FakePrismaClient & PrismaClient;
|
|
17
|
+
swagger?: Partial<{
|
|
18
|
+
allowedMediaTypes: Record<string, boolean>;
|
|
19
|
+
models: SwaggerModelsConfig<M>;
|
|
20
|
+
}>;
|
|
21
|
+
}
|
|
22
|
+
export = modelsToOpenApi;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { JSONSchema7 } from "json-schema";
|
|
2
|
+
import type { OpenAPIV3 } from "openapi-types";
|
|
3
|
+
declare class PrismaJsonSchemaParser {
|
|
4
|
+
private readonly dmmf;
|
|
5
|
+
private readonly schemaInputTypes;
|
|
6
|
+
constructor(dmmf: any);
|
|
7
|
+
formatInputTypeData(inputType: any): any;
|
|
8
|
+
getExampleModelsSchemas(modelNames: string[], schemas: Record<string, OpenAPIV3.SchemaObject>): Record<string, OpenAPIV3.ExampleObject | OpenAPIV3.ReferenceObject>;
|
|
9
|
+
getPaginatedModelsSchemas(modelNames: string[]): Record<string, OpenAPIV3.SchemaObject>;
|
|
10
|
+
getPaginationDataSchema(): Record<string, OpenAPIV3.SchemaObject>;
|
|
11
|
+
parseInputTypes(models: string[]): Record<string, JSONSchema7>;
|
|
12
|
+
parseModels(): Record<string, JSONSchema7>;
|
|
13
|
+
parseObjectInputType(fieldType: any): {
|
|
14
|
+
$ref?: string;
|
|
15
|
+
type?: string;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export = PrismaJsonSchemaParser;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { JSONSchema7 } from "json-schema";
|
|
2
|
+
import type { OpenAPIV3 } from "openapi-types";
|
|
3
|
+
declare class PrismaJsonSchemaParser {
|
|
4
|
+
private readonly dmmf;
|
|
5
|
+
private readonly schemaInputTypes;
|
|
6
|
+
constructor(dmmf: any);
|
|
7
|
+
formatInputTypeData(inputType: any): any;
|
|
8
|
+
getExampleModelsSchemas(modelNames: string[], schemas: Record<string, OpenAPIV3.SchemaObject>): Record<string, OpenAPIV3.ExampleObject | OpenAPIV3.ReferenceObject>;
|
|
9
|
+
getPaginatedModelsSchemas(modelNames: string[]): Record<string, OpenAPIV3.SchemaObject>;
|
|
10
|
+
getPaginationDataSchema(): Record<string, OpenAPIV3.SchemaObject>;
|
|
11
|
+
parseInputTypes(models: string[]): Record<string, JSONSchema7>;
|
|
12
|
+
parseModels(): Record<string, JSONSchema7>;
|
|
13
|
+
parseObjectInputType(fieldType: any): {
|
|
14
|
+
$ref?: string;
|
|
15
|
+
type?: string;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export default PrismaJsonSchemaParser;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { JSONSchema7 } from "json-schema";
|
|
2
|
+
import type { OpenAPIV3 } from "openapi-types";
|
|
3
|
+
declare class PrismaJsonSchemaParser {
|
|
4
|
+
private readonly dmmf;
|
|
5
|
+
private readonly schemaInputTypes;
|
|
6
|
+
constructor(dmmf: any);
|
|
7
|
+
formatInputTypeData(inputType: any): any;
|
|
8
|
+
getExampleModelsSchemas(modelNames: string[], schemas: Record<string, OpenAPIV3.SchemaObject>): Record<string, OpenAPIV3.ExampleObject | OpenAPIV3.ReferenceObject>;
|
|
9
|
+
getPaginatedModelsSchemas(modelNames: string[]): Record<string, OpenAPIV3.SchemaObject>;
|
|
10
|
+
getPaginationDataSchema(): Record<string, OpenAPIV3.SchemaObject>;
|
|
11
|
+
parseInputTypes(models: string[]): Record<string, JSONSchema7>;
|
|
12
|
+
parseModels(): Record<string, JSONSchema7>;
|
|
13
|
+
parseObjectInputType(fieldType: any): {
|
|
14
|
+
$ref?: string;
|
|
15
|
+
type?: string;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export = PrismaJsonSchemaParser;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { RouteType } from "../types.d.cts";
|
|
2
|
+
import type { SwaggerParameter } from "./types.d.cts";
|
|
3
|
+
export declare const commonQueryParameters: SwaggerParameter[];
|
|
4
|
+
export declare const listQueryParameters: SwaggerParameter[];
|
|
5
|
+
export declare const getQueryParameters: (routeType: RouteType, additionalQueryParameters?: SwaggerParameter[]) => SwaggerParameter[];
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { RouteType } from "../types.d.mts";
|
|
2
|
+
import type { SwaggerParameter } from "./types.d.mts";
|
|
3
|
+
export declare const commonQueryParameters: SwaggerParameter[];
|
|
4
|
+
export declare const listQueryParameters: SwaggerParameter[];
|
|
5
|
+
export declare const getQueryParameters: (routeType: RouteType, additionalQueryParameters?: SwaggerParameter[]) => SwaggerParameter[];
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { RouteType } from "../types.d.ts";
|
|
2
|
+
import type { SwaggerParameter } from "./types.d.ts";
|
|
3
|
+
export declare const commonQueryParameters: SwaggerParameter[];
|
|
4
|
+
export declare const listQueryParameters: SwaggerParameter[];
|
|
5
|
+
export declare const getQueryParameters: (routeType: RouteType, additionalQueryParameters?: SwaggerParameter[]) => SwaggerParameter[];
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { OpenAPIV3 } from "openapi-types";
|
|
2
|
+
import type { RouteType } from "../types.d.cts";
|
|
3
|
+
export interface SwaggerType {
|
|
4
|
+
description?: string;
|
|
5
|
+
isArray?: boolean;
|
|
6
|
+
name: string;
|
|
7
|
+
required?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface SwaggerOperation {
|
|
10
|
+
body?: SwaggerType;
|
|
11
|
+
response: SwaggerType;
|
|
12
|
+
responses?: Record<number, any>;
|
|
13
|
+
summary?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface SwaggerParameter {
|
|
16
|
+
description?: string;
|
|
17
|
+
name: string;
|
|
18
|
+
schema: any & {
|
|
19
|
+
type: string;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export interface ModelsConfig {
|
|
23
|
+
additionalQueryParams?: SwaggerParameter[];
|
|
24
|
+
routeTypes?: {
|
|
25
|
+
[RouteType.CREATE]?: SwaggerOperation;
|
|
26
|
+
[RouteType.DELETE]?: SwaggerOperation;
|
|
27
|
+
[RouteType.READ_ALL]?: SwaggerOperation;
|
|
28
|
+
[RouteType.READ_ONE]?: SwaggerOperation;
|
|
29
|
+
[RouteType.UPDATE]?: SwaggerOperation;
|
|
30
|
+
};
|
|
31
|
+
tag: OpenAPIV3.TagObject;
|
|
32
|
+
type?: SwaggerType;
|
|
33
|
+
}
|
|
34
|
+
export type SwaggerModelsConfig<M extends string> = {
|
|
35
|
+
[key in M]?: ModelsConfig;
|
|
36
|
+
};
|
|
37
|
+
export type Routes<M extends string> = {
|
|
38
|
+
[key in M]?: RouteType[];
|
|
39
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { OpenAPIV3 } from "openapi-types";
|
|
2
|
+
import type { RouteType } from "../types.d.mts";
|
|
3
|
+
export interface SwaggerType {
|
|
4
|
+
description?: string;
|
|
5
|
+
isArray?: boolean;
|
|
6
|
+
name: string;
|
|
7
|
+
required?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface SwaggerOperation {
|
|
10
|
+
body?: SwaggerType;
|
|
11
|
+
response: SwaggerType;
|
|
12
|
+
responses?: Record<number, any>;
|
|
13
|
+
summary?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface SwaggerParameter {
|
|
16
|
+
description?: string;
|
|
17
|
+
name: string;
|
|
18
|
+
schema: any & {
|
|
19
|
+
type: string;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export interface ModelsConfig {
|
|
23
|
+
additionalQueryParams?: SwaggerParameter[];
|
|
24
|
+
routeTypes?: {
|
|
25
|
+
[RouteType.CREATE]?: SwaggerOperation;
|
|
26
|
+
[RouteType.DELETE]?: SwaggerOperation;
|
|
27
|
+
[RouteType.READ_ALL]?: SwaggerOperation;
|
|
28
|
+
[RouteType.READ_ONE]?: SwaggerOperation;
|
|
29
|
+
[RouteType.UPDATE]?: SwaggerOperation;
|
|
30
|
+
};
|
|
31
|
+
tag: OpenAPIV3.TagObject;
|
|
32
|
+
type?: SwaggerType;
|
|
33
|
+
}
|
|
34
|
+
export type SwaggerModelsConfig<M extends string> = {
|
|
35
|
+
[key in M]?: ModelsConfig;
|
|
36
|
+
};
|
|
37
|
+
export type Routes<M extends string> = {
|
|
38
|
+
[key in M]?: RouteType[];
|
|
39
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { OpenAPIV3 } from "openapi-types";
|
|
2
|
+
import type { RouteType } from "../types.d.ts";
|
|
3
|
+
export interface SwaggerType {
|
|
4
|
+
description?: string;
|
|
5
|
+
isArray?: boolean;
|
|
6
|
+
name: string;
|
|
7
|
+
required?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface SwaggerOperation {
|
|
10
|
+
body?: SwaggerType;
|
|
11
|
+
response: SwaggerType;
|
|
12
|
+
responses?: Record<number, any>;
|
|
13
|
+
summary?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface SwaggerParameter {
|
|
16
|
+
description?: string;
|
|
17
|
+
name: string;
|
|
18
|
+
schema: any & {
|
|
19
|
+
type: string;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export interface ModelsConfig {
|
|
23
|
+
additionalQueryParams?: SwaggerParameter[];
|
|
24
|
+
routeTypes?: {
|
|
25
|
+
[RouteType.CREATE]?: SwaggerOperation;
|
|
26
|
+
[RouteType.DELETE]?: SwaggerOperation;
|
|
27
|
+
[RouteType.READ_ALL]?: SwaggerOperation;
|
|
28
|
+
[RouteType.READ_ONE]?: SwaggerOperation;
|
|
29
|
+
[RouteType.UPDATE]?: SwaggerOperation;
|
|
30
|
+
};
|
|
31
|
+
tag: OpenAPIV3.TagObject;
|
|
32
|
+
type?: SwaggerType;
|
|
33
|
+
}
|
|
34
|
+
export type SwaggerModelsConfig<M extends string> = {
|
|
35
|
+
[key in M]?: ModelsConfig;
|
|
36
|
+
};
|
|
37
|
+
export type Routes<M extends string> = {
|
|
38
|
+
[key in M]?: RouteType[];
|
|
39
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ModelsOptions } from "../../types.d.cts";
|
|
2
|
+
import type { Routes } from "../types.d.cts";
|
|
3
|
+
declare const getModelsAccessibleRoutes: <M extends string>(modelNames: M[], models?: ModelsOptions<M>, defaultExposeStrategy?: "all" | "none") => Routes<M>;
|
|
4
|
+
export = getModelsAccessibleRoutes;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ModelsOptions } from "../../types.d.mts";
|
|
2
|
+
import type { Routes } from "../types.d.mts";
|
|
3
|
+
declare const getModelsAccessibleRoutes: <M extends string>(modelNames: M[], models?: ModelsOptions<M>, defaultExposeStrategy?: "all" | "none") => Routes<M>;
|
|
4
|
+
export default getModelsAccessibleRoutes;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ModelsOptions } from "../../types.d.ts";
|
|
2
|
+
import type { Routes } from "../types.d.ts";
|
|
3
|
+
declare const getModelsAccessibleRoutes: <M extends string>(modelNames: M[], models?: ModelsOptions<M>, defaultExposeStrategy?: "all" | "none") => Routes<M>;
|
|
4
|
+
export = getModelsAccessibleRoutes;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ModelsOptions } from "../../types.d.cts";
|
|
2
|
+
import type { Routes, SwaggerModelsConfig } from "../types.d.cts";
|
|
3
|
+
declare const getSwaggerPaths: <M extends string>({ models, modelsConfig, routes, routesMap }: GetSwaggerPathsParameters<M>) => Record<string, any>;
|
|
4
|
+
export interface GetSwaggerPathsParameters<M extends string> {
|
|
5
|
+
models?: ModelsOptions<M>;
|
|
6
|
+
modelsConfig?: SwaggerModelsConfig<M>;
|
|
7
|
+
routes: Routes<M>;
|
|
8
|
+
routesMap?: {
|
|
9
|
+
[key in M]?: string;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export = getSwaggerPaths;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ModelsOptions } from "../../types.d.mts";
|
|
2
|
+
import type { Routes, SwaggerModelsConfig } from "../types.d.mts";
|
|
3
|
+
declare const getSwaggerPaths: <M extends string>({ models, modelsConfig, routes, routesMap }: GetSwaggerPathsParameters<M>) => Record<string, any>;
|
|
4
|
+
export interface GetSwaggerPathsParameters<M extends string> {
|
|
5
|
+
models?: ModelsOptions<M>;
|
|
6
|
+
modelsConfig?: SwaggerModelsConfig<M>;
|
|
7
|
+
routes: Routes<M>;
|
|
8
|
+
routesMap?: {
|
|
9
|
+
[key in M]?: string;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export default getSwaggerPaths;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ModelsOptions } from "../../types.d.ts";
|
|
2
|
+
import type { Routes, SwaggerModelsConfig } from "../types.d.ts";
|
|
3
|
+
declare const getSwaggerPaths: <M extends string>({ models, modelsConfig, routes, routesMap }: GetSwaggerPathsParameters<M>) => Record<string, any>;
|
|
4
|
+
export interface GetSwaggerPathsParameters<M extends string> {
|
|
5
|
+
models?: ModelsOptions<M>;
|
|
6
|
+
modelsConfig?: SwaggerModelsConfig<M>;
|
|
7
|
+
routes: Routes<M>;
|
|
8
|
+
routesMap?: {
|
|
9
|
+
[key in M]?: string;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export = getSwaggerPaths;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { OpenAPIV3 } from "openapi-types";
|
|
2
|
+
import type { SwaggerModelsConfig } from "../types.d.mts";
|
|
3
|
+
declare const getSwaggerTags: <M extends string>(modelNames: M[], modelsConfig?: SwaggerModelsConfig<M>) => OpenAPIV3.TagObject[];
|
|
4
|
+
export default getSwaggerTags;
|
package/dist/types.d.cts
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import type { Handler as CreateHandler } from "./handler/create.d.cts";
|
|
2
|
+
import type { Handler as DeleteHandler } from "./handler/delete.d.cts";
|
|
3
|
+
import type { Handler as ListHandler } from "./handler/list.d.cts";
|
|
4
|
+
import type { Handler as GetHandler } from "./handler/read.d.cts";
|
|
5
|
+
import type { Handler as UpdateHandler } from "./handler/update.d.cts";
|
|
6
|
+
export declare enum RouteType {
|
|
7
|
+
CREATE = "CREATE",
|
|
8
|
+
DELETE = "DELETE",
|
|
9
|
+
READ_ALL = "READ_ALL",
|
|
10
|
+
READ_ONE = "READ_ONE",
|
|
11
|
+
UPDATE = "UPDATE"
|
|
12
|
+
}
|
|
13
|
+
export interface ModelOption {
|
|
14
|
+
exclude?: RouteType[];
|
|
15
|
+
formatResourceId?: (resourceId: string) => number | string;
|
|
16
|
+
name?: string;
|
|
17
|
+
only?: RouteType[];
|
|
18
|
+
}
|
|
19
|
+
export type ModelsOptions<M extends string = string> = {
|
|
20
|
+
[key in M]?: ModelOption;
|
|
21
|
+
};
|
|
22
|
+
export interface HandlerOptions<M extends string = string> {
|
|
23
|
+
exposeStrategy?: "all" | "none";
|
|
24
|
+
formatResourceId?: (resourceId: string) => number | string;
|
|
25
|
+
handlers?: {
|
|
26
|
+
create?: CreateHandler;
|
|
27
|
+
delete?: DeleteHandler;
|
|
28
|
+
get?: GetHandler;
|
|
29
|
+
list?: ListHandler;
|
|
30
|
+
update?: UpdateHandler;
|
|
31
|
+
};
|
|
32
|
+
models?: ModelsOptions<M>;
|
|
33
|
+
pagination?: PaginationConfig;
|
|
34
|
+
}
|
|
35
|
+
export interface PaginationConfig {
|
|
36
|
+
perPage: number;
|
|
37
|
+
}
|
|
38
|
+
export interface HandlerParameters<T, Q> {
|
|
39
|
+
adapter: Adapter<T, Q>;
|
|
40
|
+
query: Q;
|
|
41
|
+
resourceName: string;
|
|
42
|
+
}
|
|
43
|
+
export interface UniqueResourceHandlerParameters<T, Q> {
|
|
44
|
+
adapter: Adapter<T, Q>;
|
|
45
|
+
query: Q;
|
|
46
|
+
resourceId: number | string;
|
|
47
|
+
resourceName: string;
|
|
48
|
+
}
|
|
49
|
+
export interface Adapter<T, Q, M extends string = string> {
|
|
50
|
+
connect?: () => Promise<void>;
|
|
51
|
+
create: (resourceName: M, data: any, query: Q) => Promise<T>;
|
|
52
|
+
delete: (resourceName: M, resourceId: number | string, query: Q) => Promise<T>;
|
|
53
|
+
disconnect?: () => Promise<void>;
|
|
54
|
+
getAll: (resourceName: M, query: Q) => Promise<T[]>;
|
|
55
|
+
getModels: () => M[];
|
|
56
|
+
getOne: (resourceName: M, resourceId: number | string, query: Q) => Promise<T>;
|
|
57
|
+
getPaginationData: (resourceName: M, query: Q) => Promise<PaginationData>;
|
|
58
|
+
handleError?: (error: Error) => void;
|
|
59
|
+
init?: () => Promise<void>;
|
|
60
|
+
mapModelsToRouteNames?: () => Promise<{
|
|
61
|
+
[key in M]?: string;
|
|
62
|
+
}>;
|
|
63
|
+
models?: M[];
|
|
64
|
+
parseQuery: (resourceName: M, query: ParsedQueryParameters) => Q;
|
|
65
|
+
update: (resourceName: M, resourceId: number | string, data: any, query: Q) => Promise<T>;
|
|
66
|
+
}
|
|
67
|
+
export interface PaginationData {
|
|
68
|
+
page: number;
|
|
69
|
+
pageCount: number;
|
|
70
|
+
total: number;
|
|
71
|
+
}
|
|
72
|
+
export type RecursiveField = Record<string, Record<string, boolean> | boolean>;
|
|
73
|
+
export type WhereOperator = "$cont" | "$ends" | "$eq" | "$gt" | "$gte" | "$in" | "$isnull" | "$lt" | "$lte" | "$neq" | "$notin" | "$starts";
|
|
74
|
+
export type SearchCondition = Date | boolean | number | string | null;
|
|
75
|
+
export type WhereCondition = {
|
|
76
|
+
[key in WhereOperator]?: SearchCondition;
|
|
77
|
+
};
|
|
78
|
+
export type Condition = {
|
|
79
|
+
[key: string]: Condition | SearchCondition | WhereCondition;
|
|
80
|
+
};
|
|
81
|
+
export type WhereField = Condition & {
|
|
82
|
+
$and?: Condition | Condition[];
|
|
83
|
+
$not?: Condition | Condition[];
|
|
84
|
+
$or?: Condition | Condition[];
|
|
85
|
+
};
|
|
86
|
+
export type OrderByOperator = "$asc" | "$desc";
|
|
87
|
+
export type OrderByField = Record<string, OrderByOperator>;
|
|
88
|
+
export interface ParsedQueryParameters {
|
|
89
|
+
distinct?: string;
|
|
90
|
+
include?: RecursiveField;
|
|
91
|
+
limit?: number | undefined;
|
|
92
|
+
orderBy?: OrderByField;
|
|
93
|
+
originalQuery?: Record<string, any>;
|
|
94
|
+
page?: number | undefined;
|
|
95
|
+
select?: RecursiveField;
|
|
96
|
+
skip?: number | undefined;
|
|
97
|
+
where?: WhereField;
|
|
98
|
+
}
|
|
99
|
+
export type ExecuteHandler<Request, Response> = (request: Request, response: Response) => Promise<void>;
|
|
100
|
+
export interface FakePrismaClient {
|
|
101
|
+
$connect: () => void;
|
|
102
|
+
$disconnect: () => Promise<void>;
|
|
103
|
+
[key: string]: any;
|
|
104
|
+
_dmmf?: any;
|
|
105
|
+
_getDmmf?: () => any;
|
|
106
|
+
}
|
package/dist/types.d.mts
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import type { Handler as CreateHandler } from "./handler/create.d.mts";
|
|
2
|
+
import type { Handler as DeleteHandler } from "./handler/delete.d.mts";
|
|
3
|
+
import type { Handler as ListHandler } from "./handler/list.d.mts";
|
|
4
|
+
import type { Handler as GetHandler } from "./handler/read.d.mts";
|
|
5
|
+
import type { Handler as UpdateHandler } from "./handler/update.d.mts";
|
|
6
|
+
export declare enum RouteType {
|
|
7
|
+
CREATE = "CREATE",
|
|
8
|
+
DELETE = "DELETE",
|
|
9
|
+
READ_ALL = "READ_ALL",
|
|
10
|
+
READ_ONE = "READ_ONE",
|
|
11
|
+
UPDATE = "UPDATE"
|
|
12
|
+
}
|
|
13
|
+
export interface ModelOption {
|
|
14
|
+
exclude?: RouteType[];
|
|
15
|
+
formatResourceId?: (resourceId: string) => number | string;
|
|
16
|
+
name?: string;
|
|
17
|
+
only?: RouteType[];
|
|
18
|
+
}
|
|
19
|
+
export type ModelsOptions<M extends string = string> = {
|
|
20
|
+
[key in M]?: ModelOption;
|
|
21
|
+
};
|
|
22
|
+
export interface HandlerOptions<M extends string = string> {
|
|
23
|
+
exposeStrategy?: "all" | "none";
|
|
24
|
+
formatResourceId?: (resourceId: string) => number | string;
|
|
25
|
+
handlers?: {
|
|
26
|
+
create?: CreateHandler;
|
|
27
|
+
delete?: DeleteHandler;
|
|
28
|
+
get?: GetHandler;
|
|
29
|
+
list?: ListHandler;
|
|
30
|
+
update?: UpdateHandler;
|
|
31
|
+
};
|
|
32
|
+
models?: ModelsOptions<M>;
|
|
33
|
+
pagination?: PaginationConfig;
|
|
34
|
+
}
|
|
35
|
+
export interface PaginationConfig {
|
|
36
|
+
perPage: number;
|
|
37
|
+
}
|
|
38
|
+
export interface HandlerParameters<T, Q> {
|
|
39
|
+
adapter: Adapter<T, Q>;
|
|
40
|
+
query: Q;
|
|
41
|
+
resourceName: string;
|
|
42
|
+
}
|
|
43
|
+
export interface UniqueResourceHandlerParameters<T, Q> {
|
|
44
|
+
adapter: Adapter<T, Q>;
|
|
45
|
+
query: Q;
|
|
46
|
+
resourceId: number | string;
|
|
47
|
+
resourceName: string;
|
|
48
|
+
}
|
|
49
|
+
export interface Adapter<T, Q, M extends string = string> {
|
|
50
|
+
connect?: () => Promise<void>;
|
|
51
|
+
create: (resourceName: M, data: any, query: Q) => Promise<T>;
|
|
52
|
+
delete: (resourceName: M, resourceId: number | string, query: Q) => Promise<T>;
|
|
53
|
+
disconnect?: () => Promise<void>;
|
|
54
|
+
getAll: (resourceName: M, query: Q) => Promise<T[]>;
|
|
55
|
+
getModels: () => M[];
|
|
56
|
+
getOne: (resourceName: M, resourceId: number | string, query: Q) => Promise<T>;
|
|
57
|
+
getPaginationData: (resourceName: M, query: Q) => Promise<PaginationData>;
|
|
58
|
+
handleError?: (error: Error) => void;
|
|
59
|
+
init?: () => Promise<void>;
|
|
60
|
+
mapModelsToRouteNames?: () => Promise<{
|
|
61
|
+
[key in M]?: string;
|
|
62
|
+
}>;
|
|
63
|
+
models?: M[];
|
|
64
|
+
parseQuery: (resourceName: M, query: ParsedQueryParameters) => Q;
|
|
65
|
+
update: (resourceName: M, resourceId: number | string, data: any, query: Q) => Promise<T>;
|
|
66
|
+
}
|
|
67
|
+
export interface PaginationData {
|
|
68
|
+
page: number;
|
|
69
|
+
pageCount: number;
|
|
70
|
+
total: number;
|
|
71
|
+
}
|
|
72
|
+
export type RecursiveField = Record<string, Record<string, boolean> | boolean>;
|
|
73
|
+
export type WhereOperator = "$cont" | "$ends" | "$eq" | "$gt" | "$gte" | "$in" | "$isnull" | "$lt" | "$lte" | "$neq" | "$notin" | "$starts";
|
|
74
|
+
export type SearchCondition = Date | boolean | number | string | null;
|
|
75
|
+
export type WhereCondition = {
|
|
76
|
+
[key in WhereOperator]?: SearchCondition;
|
|
77
|
+
};
|
|
78
|
+
export type Condition = {
|
|
79
|
+
[key: string]: Condition | SearchCondition | WhereCondition;
|
|
80
|
+
};
|
|
81
|
+
export type WhereField = Condition & {
|
|
82
|
+
$and?: Condition | Condition[];
|
|
83
|
+
$not?: Condition | Condition[];
|
|
84
|
+
$or?: Condition | Condition[];
|
|
85
|
+
};
|
|
86
|
+
export type OrderByOperator = "$asc" | "$desc";
|
|
87
|
+
export type OrderByField = Record<string, OrderByOperator>;
|
|
88
|
+
export interface ParsedQueryParameters {
|
|
89
|
+
distinct?: string;
|
|
90
|
+
include?: RecursiveField;
|
|
91
|
+
limit?: number | undefined;
|
|
92
|
+
orderBy?: OrderByField;
|
|
93
|
+
originalQuery?: Record<string, any>;
|
|
94
|
+
page?: number | undefined;
|
|
95
|
+
select?: RecursiveField;
|
|
96
|
+
skip?: number | undefined;
|
|
97
|
+
where?: WhereField;
|
|
98
|
+
}
|
|
99
|
+
export type ExecuteHandler<Request, Response> = (request: Request, response: Response) => Promise<void>;
|
|
100
|
+
export interface FakePrismaClient {
|
|
101
|
+
$connect: () => void;
|
|
102
|
+
$disconnect: () => Promise<void>;
|
|
103
|
+
[key: string]: any;
|
|
104
|
+
_dmmf?: any;
|
|
105
|
+
_getDmmf?: () => any;
|
|
106
|
+
}
|