@visulima/crud 2.0.10 → 2.0.12

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 CHANGED
@@ -1,3 +1,25 @@
1
+ ## @visulima/crud [2.0.12](https://github.com/visulima/visulima/compare/@visulima/crud@2.0.11...@visulima/crud@2.0.12) (2024-01-19)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * updated all deps, updated test based on eslint errors ([909f8f3](https://github.com/visulima/visulima/commit/909f8f384804d7ef140354ab44f867532dbc9847))
7
+
8
+
9
+
10
+ ### Dependencies
11
+
12
+ * **@visulima/pagination:** upgraded to 3.0.11
13
+ * **@visulima/prisma-dmmf-transformer:** upgraded to 2.0.12
14
+
15
+ ## @visulima/crud [2.0.11](https://github.com/visulima/visulima/compare/@visulima/crud@2.0.10...@visulima/crud@2.0.11) (2023-12-06)
16
+
17
+
18
+
19
+ ### Dependencies
20
+
21
+ * **@visulima/prisma-dmmf-transformer:** upgraded to 2.0.11
22
+
1
23
  ## @visulima/crud [2.0.10](https://github.com/visulima/visulima/compare/@visulima/crud@2.0.9...@visulima/crud@2.0.10) (2023-11-30)
2
24
 
3
25
 
@@ -5,4 +5,4 @@ var l=Object.create;var s=Object.defineProperty;var p=Object.getOwnPropertyDescr
5
5
 
6
6
  export { A as a, M as b, d as c, a as d, C as e, O as f };
7
7
  //# sourceMappingURL=out.js.map
8
- //# sourceMappingURL=chunk-SAH4YW7W.mjs.map
8
+ //# sourceMappingURL=chunk-BYPXSHQH.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/.pnpm/tsup@7.1.0_postcss@8.4.31_typescript@5.2.2/node_modules/tsup/assets/esm_shims.js","../src/types.d.ts","../src/utils/get-accessible-routes.ts"],"names":["fileURLToPath","path","getFilename","getDirname","__dirname","init_esm_shims","__esmMin","RouteType","getAccessibleRoutes","only","exclude","defaultExposeStrategy","accessibleRoutes","element","get_accessible_routes_default"],"mappings":"4iBACA,OAAS,iBAAAA,MAAqB,MAC9B,OAAOC,MAAU,OAFjB,IAIMC,EACAC,EAEOC,EAPbC,EAAAC,EAAA,kBAIMJ,EAAc,IAAMF,EAAc,YAAY,GAAG,EACjDG,EAAa,IAAMF,EAAK,QAAQC,EAAY,CAAC,EAEtCE,EAA4BD,EAAW,ICPpDE,IAMO,IAAKE,OACRA,EAAA,OAAS,SACTA,EAAA,OAAS,SACTA,EAAA,SAAW,WACXA,EAAA,SAAW,WACXA,EAAA,OAAS,SALDA,OAAA,ICNZF,IAEA,IAAMG,EAAsB,CAACC,EAAoBC,EAAuBC,EAAwC,QAAuB,CACnI,IAAIC,EACAD,IAA0B,OAAS,CAAC,EAAI,iDAA6F,EAEzI,OAAI,MAAM,QAAQF,CAAI,IAClBG,EAAmBH,GAGnBC,GAAS,SACTE,EAAmBA,EAAiB,OAAQC,GAAY,CAACH,EAAQ,SAASG,CAAO,CAAC,GAG/ED,CACX,EAEOE,EAAQN","sourcesContent":["// Shim globals in esm bundle\nimport { fileURLToPath } from 'url'\nimport path from 'path'\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\n// TODO: find the correct way to type this\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport type Condition = Record<string, Condition | SearchCondition | WhereCondition>;\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport type WhereField = Condition & {\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n $and?: Condition | Condition[];\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n $not?: Condition | Condition[];\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\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;\n orderBy?: OrderByField;\n originalQuery?: Record<string, any>;\n page?: number;\n select?: RecursiveField;\n skip?: number;\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.d\";\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"]}
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/tsup@8.0.1_postcss@8.4.33_typescript@5.3.3/node_modules/tsup/assets/esm_shims.js","../src/types.d.ts","../src/utils/get-accessible-routes.ts"],"names":["fileURLToPath","path","getFilename","getDirname","__dirname","init_esm_shims","__esmMin","RouteType","getAccessibleRoutes","only","exclude","defaultExposeStrategy","accessibleRoutes","element","get_accessible_routes_default"],"mappings":"4iBACA,OAAS,iBAAAA,MAAqB,MAC9B,OAAOC,MAAU,OAFjB,IAIMC,EACAC,EAEOC,EAPbC,EAAAC,EAAA,kBAIMJ,EAAc,IAAMF,EAAc,YAAY,GAAG,EACjDG,EAAa,IAAMF,EAAK,QAAQC,EAAY,CAAC,EAEtCE,EAA4BD,EAAW,ICPpDE,IAMO,IAAKE,OACRA,EAAA,OAAS,SACTA,EAAA,OAAS,SACTA,EAAA,SAAW,WACXA,EAAA,SAAW,WACXA,EAAA,OAAS,SALDA,OAAA,ICNZF,IAEA,IAAMG,EAAsB,CAACC,EAAoBC,EAAuBC,EAAwC,QAAuB,CACnI,IAAIC,EACAD,IAA0B,OAAS,CAAC,EAAI,iDAA6F,EAEzI,OAAI,MAAM,QAAQF,CAAI,IAClBG,EAAmBH,GAGnBC,GAAS,SACTE,EAAmBA,EAAiB,OAAQC,GAAY,CAACH,EAAQ,SAASG,CAAO,CAAC,GAG/ED,CACX,EAEOE,EAAQN","sourcesContent":["// Shim globals in esm bundle\nimport { fileURLToPath } from 'url'\nimport path from 'path'\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\n// TODO: find the correct way to type this\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport type Condition = Record<string, Condition | SearchCondition | WhereCondition>;\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport type WhereField = Condition & {\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n $and?: Condition | Condition[];\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n $not?: Condition | Condition[];\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\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;\n orderBy?: OrderByField;\n originalQuery?: Record<string, any>;\n page?: number;\n select?: RecursiveField;\n skip?: number;\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.d\";\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"]}
@@ -8,4 +8,4 @@ exports.c = a;
8
8
  exports.d = R;
9
9
  exports.e = T;
10
10
  //# sourceMappingURL=out.js.map
11
- //# sourceMappingURL=chunk-DXYBIDVK.js.map
11
+ //# sourceMappingURL=chunk-VKZQ57TC.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/.pnpm/tsup@7.1.0_postcss@8.4.31_typescript@5.2.2/node_modules/tsup/assets/cjs_shims.js","../src/types.d.ts","../src/utils/get-accessible-routes.ts"],"names":["init_cjs_shims","__esmMin","RouteType","getAccessibleRoutes","only","exclude","defaultExposeStrategy","accessibleRoutes","element","get_accessible_routes_default"],"mappings":"4iBAAA,IAAAA,EAAAC,EAAA,oBCAAD,IAMO,IAAKE,OACRA,EAAA,OAAS,SACTA,EAAA,OAAS,SACTA,EAAA,SAAW,WACXA,EAAA,SAAW,WACXA,EAAA,OAAS,SALDA,OAAA,ICNZF,IAEA,IAAMG,EAAsB,CAACC,EAAoBC,EAAuBC,EAAwC,QAAuB,CACnI,IAAIC,EACAD,IAA0B,OAAS,CAAC,EAAI,iDAA6F,EAEzI,OAAI,MAAM,QAAQF,CAAI,IAClBG,EAAmBH,GAGnBC,GAAS,SACTE,EAAmBA,EAAiB,OAAQC,GAAY,CAACH,EAAQ,SAASG,CAAO,CAAC,GAG/ED,CACX,EAEOE,EAAQN","sourcesContent":["// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () =>\n typeof document === 'undefined'\n ? new URL('file:' + __filename).href\n : (document.currentScript && document.currentScript.src) ||\n new URL('main.js', document.baseURI).href\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\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\n// TODO: find the correct way to type this\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport type Condition = Record<string, Condition | SearchCondition | WhereCondition>;\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport type WhereField = Condition & {\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n $and?: Condition | Condition[];\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n $not?: Condition | Condition[];\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\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;\n orderBy?: OrderByField;\n originalQuery?: Record<string, any>;\n page?: number;\n select?: RecursiveField;\n skip?: number;\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.d\";\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"]}
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/tsup@8.0.1_postcss@8.4.33_typescript@5.3.3/node_modules/tsup/assets/cjs_shims.js","../src/types.d.ts","../src/utils/get-accessible-routes.ts"],"names":["init_cjs_shims","__esmMin","RouteType","getAccessibleRoutes","only","exclude","defaultExposeStrategy","accessibleRoutes","element","get_accessible_routes_default"],"mappings":"4iBAAA,IAAAA,EAAAC,EAAA,oBCAAD,IAMO,IAAKE,OACRA,EAAA,OAAS,SACTA,EAAA,OAAS,SACTA,EAAA,SAAW,WACXA,EAAA,SAAW,WACXA,EAAA,OAAS,SALDA,OAAA,ICNZF,IAEA,IAAMG,EAAsB,CAACC,EAAoBC,EAAuBC,EAAwC,QAAuB,CACnI,IAAIC,EACAD,IAA0B,OAAS,CAAC,EAAI,iDAA6F,EAEzI,OAAI,MAAM,QAAQF,CAAI,IAClBG,EAAmBH,GAGnBC,GAAS,SACTE,EAAmBA,EAAiB,OAAQC,GAAY,CAACH,EAAQ,SAASG,CAAO,CAAC,GAG/ED,CACX,EAEOE,EAAQN","sourcesContent":["// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () =>\n typeof document === 'undefined'\n ? new URL('file:' + __filename).href\n : (document.currentScript && document.currentScript.src) ||\n new URL('main.js', document.baseURI).href\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\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\n// TODO: find the correct way to type this\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport type Condition = Record<string, Condition | SearchCondition | WhereCondition>;\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport type WhereField = Condition & {\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n $and?: Condition | Condition[];\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n $not?: Condition | Condition[];\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\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;\n orderBy?: OrderByField;\n originalQuery?: Record<string, any>;\n page?: number;\n select?: RecursiveField;\n skip?: number;\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.d\";\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"]}
package/dist/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { HttpError } from 'http-errors';
2
- import { C as Condition, S as SearchCondition, A as Adapter, F as FakePrismaClient, P as PaginationData, a as ParsedQueryParameters, R as RouteType, M as ModelsOptions } from './types.d-824d05f2.js';
3
- export { H as CrudHandlerOptions, b as HandlerParameters, c as ModelOption, O as OrderByField, d as OrderByOperator, e as PaginationConfig, f as RecursiveField, U as UniqueResourceHandlerParameters, W as WhereCondition, g as WhereField, h as WhereOperator } from './types.d-824d05f2.js';
2
+ import { C as Condition, S as SearchCondition, A as Adapter, F as FakePrismaClient, P as PaginationData, a as ParsedQueryParameters, R as RouteType, M as ModelsOptions } from './types.d-6bKBC0DW.mjs';
3
+ export { H as CrudHandlerOptions, b as HandlerParameters, c as ModelOption, O as OrderByField, d as OrderByOperator, e as PaginationConfig, f as RecursiveField, U as UniqueResourceHandlerParameters, W as WhereCondition, g as WhereField, h as WhereOperator } from './types.d-6bKBC0DW.mjs';
4
4
  import { OpenAPIV3 } from 'openapi-types';
5
5
 
6
6
  type PrismaRecursiveField = "include" | "select";
@@ -138,4 +138,4 @@ interface ModelsToOpenApiParameters<M extends string, PrismaClient> {
138
138
  }>;
139
139
  }
140
140
 
141
- export { Adapter, Condition, ModelsOptions, ModelsToOpenApiParameters, PaginationData, ParsedQueryParameters, PrismaAdapter, RouteType, SearchCondition, SwaggerModelsConfig, modelsToOpenApi };
141
+ export { Adapter, Condition, ModelsOptions, type ModelsToOpenApiParameters, PaginationData, ParsedQueryParameters, PrismaAdapter, RouteType, SearchCondition, type SwaggerModelsConfig, modelsToOpenApi };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { HttpError } from 'http-errors';
2
- import { C as Condition, S as SearchCondition, A as Adapter, F as FakePrismaClient, P as PaginationData, a as ParsedQueryParameters, R as RouteType, M as ModelsOptions } from './types.d-824d05f2.js';
3
- export { H as CrudHandlerOptions, b as HandlerParameters, c as ModelOption, O as OrderByField, d as OrderByOperator, e as PaginationConfig, f as RecursiveField, U as UniqueResourceHandlerParameters, W as WhereCondition, g as WhereField, h as WhereOperator } from './types.d-824d05f2.js';
2
+ import { C as Condition, S as SearchCondition, A as Adapter, F as FakePrismaClient, P as PaginationData, a as ParsedQueryParameters, R as RouteType, M as ModelsOptions } from './types.d-6bKBC0DW.js';
3
+ export { H as CrudHandlerOptions, b as HandlerParameters, c as ModelOption, O as OrderByField, d as OrderByOperator, e as PaginationConfig, f as RecursiveField, U as UniqueResourceHandlerParameters, W as WhereCondition, g as WhereField, h as WhereOperator } from './types.d-6bKBC0DW.js';
4
4
  import { OpenAPIV3 } from 'openapi-types';
5
5
 
6
6
  type PrismaRecursiveField = "include" | "select";
@@ -138,4 +138,4 @@ interface ModelsToOpenApiParameters<M extends string, PrismaClient> {
138
138
  }>;
139
139
  }
140
140
 
141
- export { Adapter, Condition, ModelsOptions, ModelsToOpenApiParameters, PaginationData, ParsedQueryParameters, PrismaAdapter, RouteType, SearchCondition, SwaggerModelsConfig, modelsToOpenApi };
141
+ export { Adapter, Condition, ModelsOptions, type ModelsToOpenApiParameters, PaginationData, ParsedQueryParameters, PrismaAdapter, RouteType, SearchCondition, type SwaggerModelsConfig, modelsToOpenApi };
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkDXYBIDVK_js = require('./chunk-DXYBIDVK.js');
3
+ var chunkVKZQ57TC_js = require('./chunk-VKZQ57TC.js');
4
4
  var _ = require('http-errors');
5
5
  var pagination = require('@visulima/pagination');
6
6
  var prismaDmmfTransformer = require('@visulima/prisma-dmmf-transformer');
@@ -9,11 +9,11 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
9
 
10
10
  var ___default = /*#__PURE__*/_interopDefault(_);
11
11
 
12
- chunkDXYBIDVK_js.c();chunkDXYBIDVK_js.c();chunkDXYBIDVK_js.c();var N=(s,e)=>{let t={};return e.forEach(r=>{t[r]=s[r].plural;}),t},j=N;chunkDXYBIDVK_js.c();chunkDXYBIDVK_js.c();var q=new Set(["string","boolean","number"]),ee=s=>q.has(typeof s),M=ee;var te=s=>{let e={};if(Object.keys(s).forEach(t=>{let r=s[t];M(r)&&(e[t]=r);}),Object.keys(e).length!==1)throw new Error("cursor needs to be an object with exactly 1 property with a primitive value");return e},D=te;chunkDXYBIDVK_js.c();var re={$asc:"asc",$desc:"desc"},se=s=>{let e={};return Object.keys(s).forEach(t=>{let r=s[t];e[t]=re[r];}),e},F=se;chunkDXYBIDVK_js.c();var k=(s,e)=>{let t={};return Object.keys(s).forEach(r=>{t[r]=s[r]===!0?!0:{[e]:k(s[r],e)};}),t},C=k;chunkDXYBIDVK_js.c();var w=s=>s instanceof Object,ne={$cont:"contains",$ends:"endsWith",$eq:"equals",$gt:"gt",$gte:"gte",$in:"in",$lt:"lt",$lte:"lte",$neq:"not",$notin:"notIn",$starts:"startsWith"},ie=s=>/^\d{4}-[01]\d-[0-3]\d(?:T[0-2](?:\d:[0-5]){2}\d(?:\.\d+)?(?:Z|[+-][0-2]\d(?::?[0-5]\d)?)?)?$/g.test(s),ae=s=>ie(s)?new Date(s):typeof s=="string"&&s==="$isnull"?null:s,V=(s,e)=>{let t=s.split(".");return t.splice(-1,1),e.includes(t.join("."))},v=s=>{let e=Object.keys(s)[0],t=ne[e];if(t)return {[t]:s[e]}},B=(s,e,t,r)=>{let n=e.split(".").reverse(),a={};n.forEach((m,c)=>{c===0?W(s,m,a,r):a={[m]:{some:a}};});let i=n.reverse()[0],o=t[i];t[i]={some:{...o?.some,...a[i]?.some}};},S=(s,e)=>{let t={};return Object.keys(s).forEach(r=>{let n=s[r];if(V(r,e))B(n,r,t,e);else if(M(n))t[r]=n;else if(w(n)){let a=v(n);a&&(t[r]=a);}}),t},W=(s,e,t,r)=>{if(M(s))t[e]=ae(s);else switch(e){case"$or":{w(s)&&(t.OR=S(s,r));break}case"$and":{w(s)&&(t.AND=S(s,r));break}case"$not":{w(s)&&(t.NOT=S(s,r));break}default:{t[e]=v(s);break}}},oe=(s,e)=>{let t={};return Object.keys(s).forEach(r=>{let n=s[r];V(r,e)?B(n,r,t,e):W(n,r,t,e);}),t},Q=oe;var E=class{constructor({manyRelations:e={},models:t,primaryKey:r="id",prismaClient:n}){this.getPrismaClientModels=async()=>{if(this.prismaClient._dmmf!==void 0)return this.dmmf=this.prismaClient._dmmf,this.dmmf?.mappingsMap;if(this.prismaClient._getDmmf!==void 0)return this.dmmf=await this.prismaClient._getDmmf(),this.dmmf.mappingsMap;throw new Error("Couldn't get prisma client models")};this.prismaClient=n,this.primaryKey=r,this.manyRelations=e,this.ctorModels=t;}async connect(){this.prismaClient.$connect();}async create(e,t,r){return await this.getPrismaDelegate(e).create({data:t,include:r.include,select:r.select})}async delete(e,t,r){return await this.getPrismaDelegate(e).delete({include:r.include,select:r.select,where:{[this.primaryKey]:t}})}async disconnect(){await this.prismaClient.$disconnect();}async getAll(e,t){return await this.getPrismaDelegate(e).findMany({cursor:t.cursor,distinct:t.distinct,include:t.include,orderBy:t.orderBy,select:t.select,skip:t.skip,take:t.take,where:t.where})}getModels(){return this.models??[]}async getOne(e,t,r){let n=this.getPrismaDelegate(e);return await(n.findUnique??n.findOne)({include:r.include,select:r.select,where:{[this.primaryKey]:t}})}async getPaginationData(e,t){let r=await this.getPrismaDelegate(e).count({distinct:t.distinct,where:t.where});return {page:Math.ceil((t.skip??0)/(t.take??0))+1,pageCount:Math.ceil(r/(t.take??0)),total:r}}handleError(e){throw console.error(e),e instanceof Error&&e.stack&&console.error(e.stack),e.constructor.name==="PrismaClientKnownRequestError"||e.constructor.name==="PrismaClientValidationError"?___default.default(400,"invalid request, check your server logs for more info"):___default.default(500,"an unknown error occured, check your server logs for more info")}async init(){let e=this.ctorModels,t=await this.getPrismaClientModels();e!==void 0&&e.forEach(r=>{if(!Object.keys(t).includes(r))throw new Error(`Model name ${r} is invalid.`)}),this.models=e??Object.keys(t);}async mapModelsToRouteNames(){return j(await this.getPrismaClientModels(),this.getModels())}parseQuery(e,t){let r={};return t.select&&(r.select=C(t.select,"select")),t.include&&(r.include=C(t.include,"include")),t.originalQuery?.where&&(r.where=Q(JSON.parse(t.originalQuery.where),this.manyRelations[e]??[])),t.orderBy&&(r.orderBy=F(t.orderBy)),t.limit!==void 0&&(r.take=t.limit),t.skip!==void 0&&(r.skip=t.skip),t.originalQuery?.cursor&&(r.cursor=D(JSON.parse(t.originalQuery.cursor))),t.distinct&&(r.distinct=t.distinct),r}async update(e,t,r,n){return await this.getPrismaDelegate(e).update({data:r,include:n.include,select:n.select,where:{[this.primaryKey]:t}})}get client(){return this.prismaClient}getPrismaDelegate(e){return this.prismaClient[`${e.charAt(0).toLowerCase()}${e.slice(1)}`]}};chunkDXYBIDVK_js.c();chunkDXYBIDVK_js.c();chunkDXYBIDVK_js.c();var ce=s=>`#/components/schemas/${s}`,y=ce;var L=s=>{switch(s){case"Int":case"BigInt":return "integer";case"DateTime":case"Bytes":case"String":return "string";case"Float":case"Decimal":return "number";case"Json":return "object";case"Boolean":return "boolean";case"Null":return "null";default:return ""}},T="PaginationData",le=[{methodStart:"createOne",schemaNameStart:"Create"},{methodStart:"updateOne",schemaNameStart:"Update"}],x=class{constructor(e){this.dmmf=e;this.schemaInputTypes=new Map;}formatInputTypeData(e){if(e.kind==="object"){let r=y(e.type.name);return e.isList?{items:{$ref:r},type:"array",xml:{name:e.type.name,wrapped:!0}}:{$ref:r}}let t=L(e.type);return e.isList?{items:{type:t},type:"array",xml:{name:e.type.name,wrapped:!0}}:{type:t}}getExampleModelsSchemas(e,t){let r=i=>{let o=i.replace("#/components/schemas/",""),m=t[o],c={};return Object.entries(m.properties??{}).forEach(([u,l])=>{let d=l.type;c[u]=d==="array"?[a(l.items)]:d;}),c},n=i=>{let o={};return Object.entries(i).forEach(([m,c])=>{o[m]=c.$ref===void 0?c.type:r(c.$ref);}),o},a=i=>{let o={};return Object.entries(i).forEach(([m,c])=>{c.items.$ref!==void 0?o[m]=[r(c.items.$ref)]:c.type==="array"?o[m]=[a(c.items)]:c.type==="object"?o[m]=n(c.properties):o[m]=c.type;}),o};return e.reduce((i,o)=>{let m={},c=t[o];Object.entries(c.properties).forEach(([d,f])=>{let h=f.type;h==="array"?m[d]=[r(f.items.$ref)]:h==="object"?m[d]=n(f.properties):m[d]=h;});let u=this.getPaginationDataSchema()[T],l={};return Object.entries(u.properties).forEach(([d,f])=>{l[d]=f.type;}),{...i,[`${o}`]:{value:m},[`${o}Page`]:{value:{data:[m],meta:l}},[`${o}s`]:{value:[m]}}},{})}getPaginatedModelsSchemas(e){return e.reduce((t,r)=>({...t,[`${r}Page`]:{properties:{data:{items:{$ref:y(r)},type:"array",xml:{name:"data",wrapped:!0}},meta:{$ref:y(T)}},type:"object",xml:{name:`${r}Page`}}}),{})}getPaginationDataSchema(){return pagination.createPaginationMetaSchemaObject(T)}parseInputTypes(e){let t=e.reduce((r,n)=>(le.map(i=>({name:`${i.methodStart}${n}`,schemaName:`${i.schemaNameStart}${n}`})).forEach(({name:i,schemaName:o})=>{let m=this.dmmf.mutationType.fieldMap[i].args[0].inputTypes[0].type.fields,c=[],u=m.reduce((l,d)=>{if(d.inputTypes[0].kind==="scalar"){let f=prismaDmmfTransformer.getJSONSchemaProperty(this.dmmf.datamodel,{})({name:d.name,...d.inputTypes[0]}),{type:h}=f[1];h&&Array.isArray(h)?h.includes("null")&&(l[d.name]={...h,nullable:!0,type:h.filter(R=>R!=="null")},l[d.name].type.length===1&&(l[d.name]={...l[d.name],type:l[d.name].type[0]})):l[d.name]=f[1];}else {let f=this.parseObjectInputType(d.inputTypes[0]);l[d.name]={...f,nullable:d.isNullable};}return d.isRequired&&c.push(d.name),l},{});r[o]={properties:u,type:"object",xml:{name:o}},c.length>0&&(r[o].required=c);}),r),{});return this.schemaInputTypes.forEach((r,n)=>{t[n]={properties:r,type:"object",xml:{name:n}};}),t}parseModels(){let e=prismaDmmfTransformer.transformDMMF(this.dmmf).definitions;return Object.keys(e).forEach(t=>{let{properties:r}=e[t];Object.keys(r).forEach(n=>{Array.isArray(r[n].type)&&r[n].type.includes("null")&&(r[n].type=r[n].type.filter(a=>a!=="null"),r[n].type.length===1&&(r[n].type=r[n].type[0]),r[n].nullable=!0);});}),e}parseObjectInputType(e){return e.kind==="object"?(this.schemaInputTypes.has(e.type.name)||(this.schemaInputTypes.set(e.type.name,{}),e.type.fields.forEach(t=>{let r={};if(t.inputTypes.length>1){let n=!1,a=t.inputTypes.map(i=>{let o=this.formatInputTypeData(i);if(o.type==="null"){n=!0;return}return o}).filter(Boolean);a.length===1?r=a[0]:r.anyOf=a,n&&(r.nullable=!0);}else {let n=t.inputTypes[0];r=this.formatInputTypeData(n);}this.schemaInputTypes.set(e.type.name,{...this.schemaInputTypes.get(e.type.name),[t.name]:r}),t.inputTypes.forEach(n=>{n.kind==="object"&&this.parseObjectInputType(n);});})),{$ref:y(e.type.name)}):{type:L(e.type)}}},U=x;chunkDXYBIDVK_js.c();var ge=(s,e,t="all")=>s.reduce((r,n)=>e?.[n]?{...r,[n]:chunkDXYBIDVK_js.e(e[n].only,e[n].exclude,t)}:{...r,[n]:chunkDXYBIDVK_js.e(void 0,void 0,t)},{}),H=ge;chunkDXYBIDVK_js.c();chunkDXYBIDVK_js.c();var P={distinct:{description:"Fields to distinctively retrieve",name:"distinct",schema:{type:"string"}},include:{description:"Include relations, same as select",name:"include",schema:{type:"string"}},limit:{description:"Maximum number of elements to retrieve",name:"limit",schema:{minimum:0,type:"integer"}},orderBy:{description:'Field on which to order by a direction. See <a href="https://next-crud.js.org/query-params#orderBy">the docs</a>',name:"orderBy",schema:{type:"string"}},page:{description:"Page number. Use only for pagination.",name:"page",schema:{minimum:1,type:"integer"}},select:{description:"Fields to select. For nested fields, chain them separated with a dot, eg: user.posts",name:"select",schema:{type:"string"}},skip:{description:"Number of rows to skip",name:"skip",schema:{minimum:0,type:"integer"}},where:{description:'Fields to filter. See <a href="https://next-crud.js.org/query-params#where">the docs</a>',name:"where",schema:{type:"string"}}},J=[P.select,P.include],ue=[...J,P.limit,P.skip,P.where,P.orderBy,P.page,P.distinct],K=(s,e=[])=>s==="READ_ALL"?[...ue,...e].filter(Boolean):[...J,...e].filter(Boolean);chunkDXYBIDVK_js.c();var fe=s=>`#/components/examples/${s}`,O=fe;var b=(s,e)=>e?{items:{$ref:y(s)},type:"array"}:{$ref:y(s)},he=(s,e)=>{if(s==="CREATE")return {content:{content:{"application/json":{example:O(e),schema:b(e)}},description:`${e} created`},statusCode:201};if(s==="DELETE")return {content:{content:{"application/json":{example:O(e),schema:b(e)}},description:`${e} item deleted`},statusCode:200};if(s==="READ_ALL")return {content:{content:{"application/json":{examples:{Default:{$ref:O(`${e}s`)},Pagination:{$ref:O(`${e}Page`)}},schema:{oneOf:[b(e,!0),b(`${e}Page`,!1)]}}},description:`${e} list retrieved`},statusCode:200};if(s==="READ_ONE")return {content:{content:{"application/json":{example:O(e),schema:b(e)}},description:`${e} item retrieved`},statusCode:200};if(s==="UPDATE")return {content:{content:{"application/json":{example:O(e),schema:b(e)}},description:`${e} item updated`},statusCode:200}},G=(s,e)=>({content:{"application/json":{schema:{$ref:y(`${s}${e}`)}}}}),ye=s=>{switch(s){case"CREATE":return "post";case"READ_ALL":case"READ_ONE":return "get";case"UPDATE":return "put";case"DELETE":return "delete";default:throw new TypeError(`Method for route type ${s} was not found.`)}},Z=({hasId:s,modelName:e,modelsConfig:t,routeTypes:r,tag:n})=>{let a={};return r.forEach(i=>{if(r.includes(i)){let o=t?.[e]?.routeTypes?.[i]?.response.name??t?.[e]?.type?.name??e,m=ye(i),c=he(i,o);if(c===void 0)throw new TypeError(`Route type ${i}; response config was not found.`);a[m]={parameters:K(i).map(u=>({...u,in:"query"})),responses:{[c.statusCode]:c.content,...t?.[e]?.routeTypes?.[i]?.responses},summary:t?.[e]?.routeTypes?.[i]?.summary,tags:[n]},s&&a[m].parameters.push({description:`ID of the ${e}`,in:"path",name:"id",required:!0,schema:{type:"string"}}),i==="UPDATE"?a[m].requestBody=G("Update",o):i==="CREATE"&&(a[m].requestBody=G("Create",o));}}),a},Pe=({models:s,modelsConfig:e,routes:t,routesMap:r})=>Object.keys(t).reduce((n,a)=>{let i=t[a],o=s?.[a]?.name?s[a].name:r?.[a]??a,m=e?.[a]?.tag.name??a;if(i.includes("CREATE")||i.includes("READ_ALL")){let c=`/${o}`,u=["READ_ALL","CREATE"].filter(l=>i.includes(l));n[c]=Z({modelName:a,modelsConfig:e,routeTypes:u,tag:m});}if(i.includes("READ_ONE")||i.includes("UPDATE")||i.includes("DELETE")){let c=`/${o}/{id}`,u=["READ_ONE","UPDATE","DELETE"].filter(l=>i.includes(l));n[c]=Z({hasId:!0,modelName:a,modelsConfig:e,routeTypes:u,tag:m});}return n},{}),z=Pe;chunkDXYBIDVK_js.c();var Oe=(s,e)=>s.map(t=>e?.[t]?.tag?e[t].tag:{name:t}),X=Oe;var be=(s,e)=>(Object.values(s).forEach(t=>{Object.values(t).forEach(r=>{typeof r.responses=="object"&&Object.values(r.responses).forEach(n=>{typeof n.content=="object"&&Object.values(n.content).forEach(a=>{if(typeof a.example=="string"){let i=a.example.replace("#/components/examples/","");e[i]?.value!==void 0&&(a.example=e[i].value);}});});});}),s),Me=async({crud:s={models:{}},defaultExposeStrategy:e="all",models:t,prismaClient:r,swagger:n={allowedMediaTypes:{"application/json":!0},models:{}}})=>{let a,i;if(r._dmmf!==void 0?(a=r._dmmf,i=a?.mappingsMap):r._getDmmf!==void 0&&(a=await r._getDmmf(),i=a.mappingsMap),a===void 0)throw new TypeError("Couldn't get prisma client models");let o=new U(a),m=o.parseModels(),c=Object.keys(m),u=JSON.stringify({...m,...o.parseInputTypes(c),...o.getPaginationDataSchema(),...o.getPaginatedModelsSchemas(c)});t!==void 0&&t.forEach(I=>{if(!Object.keys(i).includes(I))throw new Error(`Model name ${I} is invalid.`)});let l=t??Object.keys(i),d=H(l,s.models,e),f=X(l,n.models),h=z({models:s.models,modelsConfig:n.models,routes:d,routesMap:j(i,l)}),R=JSON.parse(u.replaceAll("#/definitions","#/components/schemas")),$=o.getExampleModelsSchemas(c,R);return {examples:$,paths:be(h,$),schemas:R,tags:f}},Re=Me;
12
+ chunkVKZQ57TC_js.c();chunkVKZQ57TC_js.c();chunkVKZQ57TC_js.c();var N=(s,e)=>{let t={};return e.forEach(r=>{t[r]=s[r].plural;}),t},j=N;chunkVKZQ57TC_js.c();chunkVKZQ57TC_js.c();var q=new Set(["string","boolean","number"]),ee=s=>q.has(typeof s),M=ee;var te=s=>{let e={};if(Object.keys(s).forEach(t=>{let r=s[t];M(r)&&(e[t]=r);}),Object.keys(e).length!==1)throw new Error("cursor needs to be an object with exactly 1 property with a primitive value");return e},D=te;chunkVKZQ57TC_js.c();var re={$asc:"asc",$desc:"desc"},se=s=>{let e={};return Object.keys(s).forEach(t=>{let r=s[t];e[t]=re[r];}),e},F=se;chunkVKZQ57TC_js.c();var k=(s,e)=>{let t={};return Object.keys(s).forEach(r=>{t[r]=s[r]===!0?!0:{[e]:k(s[r],e)};}),t},C=k;chunkVKZQ57TC_js.c();var w=s=>s instanceof Object,ne={$cont:"contains",$ends:"endsWith",$eq:"equals",$gt:"gt",$gte:"gte",$in:"in",$lt:"lt",$lte:"lte",$neq:"not",$notin:"notIn",$starts:"startsWith"},ie=s=>/^\d{4}-[01]\d-[0-3]\d(?:T[0-2](?:\d:[0-5]){2}\d(?:\.\d+)?(?:Z|[+-][0-2]\d(?::?[0-5]\d)?)?)?$/g.test(s),ae=s=>ie(s)?new Date(s):typeof s=="string"&&s==="$isnull"?null:s,V=(s,e)=>{let t=s.split(".");return t.splice(-1,1),e.includes(t.join("."))},v=s=>{let e=Object.keys(s)[0],t=ne[e];if(t)return {[t]:s[e]}},B=(s,e,t,r)=>{let n=e.split(".").reverse(),a={};n.forEach((m,c)=>{c===0?W(s,m,a,r):a={[m]:{some:a}};});let i=n.reverse()[0],o=t[i];t[i]={some:{...o?.some,...a[i]?.some}};},S=(s,e)=>{let t={};return Object.keys(s).forEach(r=>{let n=s[r];if(V(r,e))B(n,r,t,e);else if(M(n))t[r]=n;else if(w(n)){let a=v(n);a&&(t[r]=a);}}),t},W=(s,e,t,r)=>{if(M(s))t[e]=ae(s);else switch(e){case"$or":{w(s)&&(t.OR=S(s,r));break}case"$and":{w(s)&&(t.AND=S(s,r));break}case"$not":{w(s)&&(t.NOT=S(s,r));break}default:{t[e]=v(s);break}}},oe=(s,e)=>{let t={};return Object.keys(s).forEach(r=>{let n=s[r];V(r,e)?B(n,r,t,e):W(n,r,t,e);}),t},Q=oe;var E=class{constructor({manyRelations:e={},models:t,primaryKey:r="id",prismaClient:n}){this.getPrismaClientModels=async()=>{if(this.prismaClient._dmmf!==void 0)return this.dmmf=this.prismaClient._dmmf,this.dmmf?.mappingsMap;if(this.prismaClient._getDmmf!==void 0)return this.dmmf=await this.prismaClient._getDmmf(),this.dmmf.mappingsMap;throw new Error("Couldn't get prisma client models")};this.prismaClient=n,this.primaryKey=r,this.manyRelations=e,this.ctorModels=t;}async connect(){this.prismaClient.$connect();}async create(e,t,r){return await this.getPrismaDelegate(e).create({data:t,include:r.include,select:r.select})}async delete(e,t,r){return await this.getPrismaDelegate(e).delete({include:r.include,select:r.select,where:{[this.primaryKey]:t}})}async disconnect(){await this.prismaClient.$disconnect();}async getAll(e,t){return await this.getPrismaDelegate(e).findMany({cursor:t.cursor,distinct:t.distinct,include:t.include,orderBy:t.orderBy,select:t.select,skip:t.skip,take:t.take,where:t.where})}getModels(){return this.models??[]}async getOne(e,t,r){let n=this.getPrismaDelegate(e);return await(n.findUnique??n.findOne)({include:r.include,select:r.select,where:{[this.primaryKey]:t}})}async getPaginationData(e,t){let r=await this.getPrismaDelegate(e).count({distinct:t.distinct,where:t.where});return {page:Math.ceil((t.skip??0)/(t.take??0))+1,pageCount:Math.ceil(r/(t.take??0)),total:r}}handleError(e){throw console.error(e),e instanceof Error&&e.stack&&console.error(e.stack),e.constructor.name==="PrismaClientKnownRequestError"||e.constructor.name==="PrismaClientValidationError"?___default.default(400,"invalid request, check your server logs for more info"):___default.default(500,"an unknown error occured, check your server logs for more info")}async init(){let e=this.ctorModels,t=await this.getPrismaClientModels();e!==void 0&&e.forEach(r=>{if(!Object.keys(t).includes(r))throw new Error(`Model name ${r} is invalid.`)}),this.models=e??Object.keys(t);}async mapModelsToRouteNames(){return j(await this.getPrismaClientModels(),this.getModels())}parseQuery(e,t){let r={};return t.select&&(r.select=C(t.select,"select")),t.include&&(r.include=C(t.include,"include")),t.originalQuery?.where&&(r.where=Q(JSON.parse(t.originalQuery.where),this.manyRelations[e]??[])),t.orderBy&&(r.orderBy=F(t.orderBy)),t.limit!==void 0&&(r.take=t.limit),t.skip!==void 0&&(r.skip=t.skip),t.originalQuery?.cursor&&(r.cursor=D(JSON.parse(t.originalQuery.cursor))),t.distinct&&(r.distinct=t.distinct),r}async update(e,t,r,n){return await this.getPrismaDelegate(e).update({data:r,include:n.include,select:n.select,where:{[this.primaryKey]:t}})}get client(){return this.prismaClient}getPrismaDelegate(e){return this.prismaClient[`${e.charAt(0).toLowerCase()}${e.slice(1)}`]}};chunkVKZQ57TC_js.c();chunkVKZQ57TC_js.c();chunkVKZQ57TC_js.c();var ce=s=>`#/components/schemas/${s}`,y=ce;var L=s=>{switch(s){case"Int":case"BigInt":return "integer";case"DateTime":case"Bytes":case"String":return "string";case"Float":case"Decimal":return "number";case"Json":return "object";case"Boolean":return "boolean";case"Null":return "null";default:return ""}},T="PaginationData",le=[{methodStart:"createOne",schemaNameStart:"Create"},{methodStart:"updateOne",schemaNameStart:"Update"}],x=class{constructor(e){this.dmmf=e;this.schemaInputTypes=new Map;}formatInputTypeData(e){if(e.kind==="object"){let r=y(e.type.name);return e.isList?{items:{$ref:r},type:"array",xml:{name:e.type.name,wrapped:!0}}:{$ref:r}}let t=L(e.type);return e.isList?{items:{type:t},type:"array",xml:{name:e.type.name,wrapped:!0}}:{type:t}}getExampleModelsSchemas(e,t){let r=i=>{let o=i.replace("#/components/schemas/",""),m=t[o],c={};return Object.entries(m.properties??{}).forEach(([u,l])=>{let d=l.type;c[u]=d==="array"?[a(l.items)]:d;}),c},n=i=>{let o={};return Object.entries(i).forEach(([m,c])=>{o[m]=c.$ref===void 0?c.type:r(c.$ref);}),o},a=i=>{let o={};return Object.entries(i).forEach(([m,c])=>{c.items.$ref!==void 0?o[m]=[r(c.items.$ref)]:c.type==="array"?o[m]=[a(c.items)]:c.type==="object"?o[m]=n(c.properties):o[m]=c.type;}),o};return e.reduce((i,o)=>{let m={},c=t[o];Object.entries(c.properties).forEach(([d,f])=>{let h=f.type;h==="array"?m[d]=[r(f.items.$ref)]:h==="object"?m[d]=n(f.properties):m[d]=h;});let u=this.getPaginationDataSchema()[T],l={};return Object.entries(u.properties).forEach(([d,f])=>{l[d]=f.type;}),{...i,[`${o}`]:{value:m},[`${o}Page`]:{value:{data:[m],meta:l}},[`${o}s`]:{value:[m]}}},{})}getPaginatedModelsSchemas(e){return e.reduce((t,r)=>({...t,[`${r}Page`]:{properties:{data:{items:{$ref:y(r)},type:"array",xml:{name:"data",wrapped:!0}},meta:{$ref:y(T)}},type:"object",xml:{name:`${r}Page`}}}),{})}getPaginationDataSchema(){return pagination.createPaginationMetaSchemaObject(T)}parseInputTypes(e){let t=e.reduce((r,n)=>(le.map(i=>({name:`${i.methodStart}${n}`,schemaName:`${i.schemaNameStart}${n}`})).forEach(({name:i,schemaName:o})=>{let m=this.dmmf.mutationType.fieldMap[i].args[0].inputTypes[0].type.fields,c=[],u=m.reduce((l,d)=>{if(d.inputTypes[0].kind==="scalar"){let f=prismaDmmfTransformer.getJSONSchemaProperty(this.dmmf.datamodel,{})({name:d.name,...d.inputTypes[0]}),{type:h}=f[1];h&&Array.isArray(h)?h.includes("null")&&(l[d.name]={...h,nullable:!0,type:h.filter(R=>R!=="null")},l[d.name].type.length===1&&(l[d.name]={...l[d.name],type:l[d.name].type[0]})):l[d.name]=f[1];}else {let f=this.parseObjectInputType(d.inputTypes[0]);l[d.name]={...f,nullable:d.isNullable};}return d.isRequired&&c.push(d.name),l},{});r[o]={properties:u,type:"object",xml:{name:o}},c.length>0&&(r[o].required=c);}),r),{});return this.schemaInputTypes.forEach((r,n)=>{t[n]={properties:r,type:"object",xml:{name:n}};}),t}parseModels(){let e=prismaDmmfTransformer.transformDMMF(this.dmmf).definitions;return Object.keys(e).forEach(t=>{let{properties:r}=e[t];Object.keys(r).forEach(n=>{Array.isArray(r[n].type)&&r[n].type.includes("null")&&(r[n].type=r[n].type.filter(a=>a!=="null"),r[n].type.length===1&&(r[n].type=r[n].type[0]),r[n].nullable=!0);});}),e}parseObjectInputType(e){return e.kind==="object"?(this.schemaInputTypes.has(e.type.name)||(this.schemaInputTypes.set(e.type.name,{}),e.type.fields.forEach(t=>{let r={};if(t.inputTypes.length>1){let n=!1,a=t.inputTypes.map(i=>{let o=this.formatInputTypeData(i);if(o.type==="null"){n=!0;return}return o}).filter(Boolean);a.length===1?r=a[0]:r.anyOf=a,n&&(r.nullable=!0);}else {let n=t.inputTypes[0];r=this.formatInputTypeData(n);}this.schemaInputTypes.set(e.type.name,{...this.schemaInputTypes.get(e.type.name),[t.name]:r}),t.inputTypes.forEach(n=>{n.kind==="object"&&this.parseObjectInputType(n);});})),{$ref:y(e.type.name)}):{type:L(e.type)}}},U=x;chunkVKZQ57TC_js.c();var ge=(s,e,t="all")=>s.reduce((r,n)=>e?.[n]?{...r,[n]:chunkVKZQ57TC_js.e(e[n].only,e[n].exclude,t)}:{...r,[n]:chunkVKZQ57TC_js.e(void 0,void 0,t)},{}),H=ge;chunkVKZQ57TC_js.c();chunkVKZQ57TC_js.c();var P={distinct:{description:"Fields to distinctively retrieve",name:"distinct",schema:{type:"string"}},include:{description:"Include relations, same as select",name:"include",schema:{type:"string"}},limit:{description:"Maximum number of elements to retrieve",name:"limit",schema:{minimum:0,type:"integer"}},orderBy:{description:'Field on which to order by a direction. See <a href="https://next-crud.js.org/query-params#orderBy">the docs</a>',name:"orderBy",schema:{type:"string"}},page:{description:"Page number. Use only for pagination.",name:"page",schema:{minimum:1,type:"integer"}},select:{description:"Fields to select. For nested fields, chain them separated with a dot, eg: user.posts",name:"select",schema:{type:"string"}},skip:{description:"Number of rows to skip",name:"skip",schema:{minimum:0,type:"integer"}},where:{description:'Fields to filter. See <a href="https://next-crud.js.org/query-params#where">the docs</a>',name:"where",schema:{type:"string"}}},J=[P.select,P.include],ue=[...J,P.limit,P.skip,P.where,P.orderBy,P.page,P.distinct],K=(s,e=[])=>s==="READ_ALL"?[...ue,...e].filter(Boolean):[...J,...e].filter(Boolean);chunkVKZQ57TC_js.c();var fe=s=>`#/components/examples/${s}`,O=fe;var b=(s,e)=>e?{items:{$ref:y(s)},type:"array"}:{$ref:y(s)},he=(s,e)=>{if(s==="CREATE")return {content:{content:{"application/json":{example:O(e),schema:b(e)}},description:`${e} created`},statusCode:201};if(s==="DELETE")return {content:{content:{"application/json":{example:O(e),schema:b(e)}},description:`${e} item deleted`},statusCode:200};if(s==="READ_ALL")return {content:{content:{"application/json":{examples:{Default:{$ref:O(`${e}s`)},Pagination:{$ref:O(`${e}Page`)}},schema:{oneOf:[b(e,!0),b(`${e}Page`,!1)]}}},description:`${e} list retrieved`},statusCode:200};if(s==="READ_ONE")return {content:{content:{"application/json":{example:O(e),schema:b(e)}},description:`${e} item retrieved`},statusCode:200};if(s==="UPDATE")return {content:{content:{"application/json":{example:O(e),schema:b(e)}},description:`${e} item updated`},statusCode:200}},G=(s,e)=>({content:{"application/json":{schema:{$ref:y(`${s}${e}`)}}}}),ye=s=>{switch(s){case"CREATE":return "post";case"READ_ALL":case"READ_ONE":return "get";case"UPDATE":return "put";case"DELETE":return "delete";default:throw new TypeError(`Method for route type ${s} was not found.`)}},Z=({hasId:s,modelName:e,modelsConfig:t,routeTypes:r,tag:n})=>{let a={};return r.forEach(i=>{if(r.includes(i)){let o=t?.[e]?.routeTypes?.[i]?.response.name??t?.[e]?.type?.name??e,m=ye(i),c=he(i,o);if(c===void 0)throw new TypeError(`Route type ${i}; response config was not found.`);a[m]={parameters:K(i).map(u=>({...u,in:"query"})),responses:{[c.statusCode]:c.content,...t?.[e]?.routeTypes?.[i]?.responses},summary:t?.[e]?.routeTypes?.[i]?.summary,tags:[n]},s&&a[m].parameters.push({description:`ID of the ${e}`,in:"path",name:"id",required:!0,schema:{type:"string"}}),i==="UPDATE"?a[m].requestBody=G("Update",o):i==="CREATE"&&(a[m].requestBody=G("Create",o));}}),a},Pe=({models:s,modelsConfig:e,routes:t,routesMap:r})=>Object.keys(t).reduce((n,a)=>{let i=t[a],o=s?.[a]?.name?s[a].name:r?.[a]??a,m=e?.[a]?.tag.name??a;if(i.includes("CREATE")||i.includes("READ_ALL")){let c=`/${o}`,u=["READ_ALL","CREATE"].filter(l=>i.includes(l));n[c]=Z({modelName:a,modelsConfig:e,routeTypes:u,tag:m});}if(i.includes("READ_ONE")||i.includes("UPDATE")||i.includes("DELETE")){let c=`/${o}/{id}`,u=["READ_ONE","UPDATE","DELETE"].filter(l=>i.includes(l));n[c]=Z({hasId:!0,modelName:a,modelsConfig:e,routeTypes:u,tag:m});}return n},{}),z=Pe;chunkVKZQ57TC_js.c();var Oe=(s,e)=>s.map(t=>e?.[t]?.tag?e[t].tag:{name:t}),X=Oe;var be=(s,e)=>(Object.values(s).forEach(t=>{Object.values(t).forEach(r=>{typeof r.responses=="object"&&Object.values(r.responses).forEach(n=>{typeof n.content=="object"&&Object.values(n.content).forEach(a=>{if(typeof a.example=="string"){let i=a.example.replace("#/components/examples/","");e[i]?.value!==void 0&&(a.example=e[i].value);}});});});}),s),Me=async({crud:s={models:{}},defaultExposeStrategy:e="all",models:t,prismaClient:r,swagger:n={allowedMediaTypes:{"application/json":!0},models:{}}})=>{let a,i;if(r._dmmf!==void 0?(a=r._dmmf,i=a?.mappingsMap):r._getDmmf!==void 0&&(a=await r._getDmmf(),i=a.mappingsMap),a===void 0)throw new TypeError("Couldn't get prisma client models");let o=new U(a),m=o.parseModels(),c=Object.keys(m),u=JSON.stringify({...m,...o.parseInputTypes(c),...o.getPaginationDataSchema(),...o.getPaginatedModelsSchemas(c)});t!==void 0&&t.forEach(I=>{if(!Object.keys(i).includes(I))throw new Error(`Model name ${I} is invalid.`)});let l=t??Object.keys(i),d=H(l,s.models,e),f=X(l,n.models),h=z({models:s.models,modelsConfig:n.models,routes:d,routesMap:j(i,l)}),R=JSON.parse(u.replaceAll("#/definitions","#/components/schemas")),$=o.getExampleModelsSchemas(c,R);return {examples:$,paths:be(h,$),schemas:R,tags:f}},Re=Me;
13
13
 
14
14
  Object.defineProperty(exports, 'RouteType', {
15
15
  enumerable: true,
16
- get: function () { return chunkDXYBIDVK_js.d; }
16
+ get: function () { return chunkVKZQ57TC_js.d; }
17
17
  });
18
18
  exports.PrismaAdapter = E;
19
19
  exports.modelsToOpenApi = Re;
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { d, f } from './chunk-SAH4YW7W.mjs';
2
- export { e as RouteType } from './chunk-SAH4YW7W.mjs';
1
+ import { d, f } from './chunk-BYPXSHQH.mjs';
2
+ export { e as RouteType } from './chunk-BYPXSHQH.mjs';
3
3
  import L from 'http-errors';
4
4
  import { createPaginationMetaSchemaObject } from '@visulima/pagination';
5
5
  import { getJSONSchemaProperty, transformDMMF } from '@visulima/prisma-dmmf-transformer';
@@ -1,4 +1,4 @@
1
- import { a as ParsedQueryParameters, A as Adapter, H as HandlerOptions, E as ExecuteHandler } from '../types.d-824d05f2.js';
1
+ import { a as ParsedQueryParameters, A as Adapter, H as HandlerOptions, E as ExecuteHandler } from '../types.d-6bKBC0DW.mjs';
2
2
  import { NextApiRequest, NextApiResponse } from 'next';
3
3
 
4
4
  declare const handler$1: <T, R extends Request, Context, Q extends ParsedQueryParameters = any, M extends string = string>(adapter: Adapter<T, Q, string>, options?: HandlerOptions<M> | undefined) => Promise<ExecuteHandler<R, Context>>;
@@ -1,4 +1,4 @@
1
- import { a as ParsedQueryParameters, A as Adapter, H as HandlerOptions, E as ExecuteHandler } from '../types.d-824d05f2.js';
1
+ import { a as ParsedQueryParameters, A as Adapter, H as HandlerOptions, E as ExecuteHandler } from '../types.d-6bKBC0DW.js';
2
2
  import { NextApiRequest, NextApiResponse } from 'next';
3
3
 
4
4
  declare const handler$1: <T, R extends Request, Context, Q extends ParsedQueryParameters = any, M extends string = string>(adapter: Adapter<T, Q, string>, options?: HandlerOptions<M> | undefined) => Promise<ExecuteHandler<R, Context>>;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkDXYBIDVK_js = require('../chunk-DXYBIDVK.js');
3
+ var chunkVKZQ57TC_js = require('../chunk-VKZQ57TC.js');
4
4
  var Q = require('http-errors');
5
5
  var pagination = require('@visulima/pagination');
6
6
  var url = require('url');
@@ -12,7 +12,7 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
12
  var Q__default = /*#__PURE__*/_interopDefault(Q);
13
13
  var re__default = /*#__PURE__*/_interopDefault(re);
14
14
 
15
- var k=chunkDXYBIDVK_js.a(L=>{chunkDXYBIDVK_js.c();Object.defineProperty(L,"__esModule",{value:!0});Object.defineProperty(L,"ReflectAdapter",{enumerable:!0,get:function(){return N}});var N=class{static get(e,t,r){let s=Reflect.get(e,t,r);return typeof s=="function"?s.bind(e):s}static set(e,t,r,s){return Reflect.set(e,t,r,s)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}};});var G=chunkDXYBIDVK_js.a(D=>{chunkDXYBIDVK_js.c();Object.defineProperty(D,"__esModule",{value:!0});function ce(n,e){for(var t in e)Object.defineProperty(n,t,{enumerable:!0,get:e[t]});}ce(D,{ReadonlyHeadersError:function(){return O},HeadersAdapter:function(){return C}});var P=k(),O=class n extends Error{constructor(){super("Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers");}static callable(){throw new n}},C=class n extends Headers{constructor(e){super(),this.headers=new Proxy(e,{get(t,r,s){if(typeof r=="symbol")return P.ReflectAdapter.get(t,r,s);let o=r.toLowerCase(),i=Object.keys(e).find(d=>d.toLowerCase()===o);if(!(typeof i>"u"))return P.ReflectAdapter.get(t,i,s)},set(t,r,s,o){if(typeof r=="symbol")return P.ReflectAdapter.set(t,r,s,o);let i=r.toLowerCase(),d=Object.keys(e).find(f=>f.toLowerCase()===i);return P.ReflectAdapter.set(t,d??r,s,o)},has(t,r){if(typeof r=="symbol")return P.ReflectAdapter.has(t,r);let s=r.toLowerCase(),o=Object.keys(e).find(i=>i.toLowerCase()===s);return typeof o>"u"?!1:P.ReflectAdapter.has(t,o)},deleteProperty(t,r){if(typeof r=="symbol")return P.ReflectAdapter.deleteProperty(t,r);let s=r.toLowerCase(),o=Object.keys(e).find(i=>i.toLowerCase()===s);return typeof o>"u"?!0:P.ReflectAdapter.deleteProperty(t,o)}});}static seal(e){return new Proxy(e,{get(t,r,s){switch(r){case"append":case"delete":case"set":return O.callable;default:return P.ReflectAdapter.get(t,r,s)}}})}merge(e){return Array.isArray(e)?e.join(", "):e}static from(e){return e instanceof Headers?e:new n(e)}append(e,t){let r=this.headers[e];typeof r=="string"?this.headers[e]=[r,t]:Array.isArray(r)?r.push(t):this.headers[e]=t;}delete(e){delete this.headers[e];}get(e){let t=this.headers[e];return typeof t<"u"?this.merge(t):null}has(e){return typeof this.headers[e]<"u"}set(e,t){this.headers[e]=t;}forEach(e,t){for(let[r,s]of this.entries())e.call(t,s,r,this);}*entries(){for(let e of Object.keys(this.headers)){let t=e.toLowerCase(),r=this.get(t);yield [t,r];}}*keys(){for(let e of Object.keys(this.headers))yield e.toLowerCase();}*values(){for(let e of Object.keys(this.headers))yield this.get(e);}[Symbol.iterator](){return this.entries()}};});var $=chunkDXYBIDVK_js.a(x=>{chunkDXYBIDVK_js.c();Object.defineProperty(x,"__esModule",{value:!0});function pe(n,e){for(var t in e)Object.defineProperty(n,t,{enumerable:!0,get:e[t]});}pe(x,{NEXT_QUERY_PARAM_PREFIX:function(){return le},PRERENDER_REVALIDATE_HEADER:function(){return Ee},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return Re},CACHE_ONE_YEAR:function(){return _e},MIDDLEWARE_FILENAME:function(){return V},MIDDLEWARE_LOCATION_REGEXP:function(){return fe},INSTRUMENTATION_HOOK_FILENAME:function(){return B},INSTRUMENTATION_HOOKS_LOCATION_REGEXP:function(){return me},PAGES_DIR_ALIAS:function(){return Ae},DOT_NEXT_ALIAS:function(){return Pe},ROOT_DIR_ALIAS:function(){return ge},APP_DIR_ALIAS:function(){return Te},RSC_MOD_REF_PROXY_ALIAS:function(){return ye},RSC_ACTION_VALIDATE_ALIAS:function(){return Se},RSC_ACTION_PROXY_ALIAS:function(){return Oe},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return Ie},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return he},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return Ne},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return Le},SERVER_PROPS_SSG_CONFLICT:function(){return Ce},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return De},SERVER_PROPS_EXPORT_ERROR:function(){return xe},GSP_NO_RETURNED_VALUE:function(){return we},GSSP_NO_RETURNED_VALUE:function(){return be},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return Me},GSSP_COMPONENT_MEMBER_ERROR:function(){return ve},NON_STANDARD_NODE_ENV:function(){return He},SSG_FALLBACK_EXPORT_ERROR:function(){return Ue},ESLINT_DEFAULT_DIRS:function(){return Y},ESLINT_DEFAULT_DIRS_WITH_APP:function(){return Qe},ESLINT_PROMPT_VALUES:function(){return je},SERVER_RUNTIME:function(){return Fe},WEBPACK_LAYERS:function(){return ke},WEBPACK_RESOURCE_QUERIES:function(){return Ge}});var le="nxtP",Ee="x-prerender-revalidate",Re="x-prerender-revalidate-if-generated",_e=31536e3,V="middleware",fe=`(?:src/)?${V}`,B="instrumentation",me=`(?:src/)?${B}`,Ae="private-next-pages",Pe="private-dot-next",ge="private-next-root-dir",Te="private-next-app-dir",ye="private-next-rsc-mod-ref-proxy",Se="private-next-rsc-action-validate",Oe="private-next-rsc-action-proxy",Ie="private-next-rsc-action-client-wrapper",he="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",Ne="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",Le="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",Ce="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",De="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",xe="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",we="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",be="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",Me="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",ve="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",He='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',Ue="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",Y=["pages","components","lib","src"],Qe=["app",...Y],je=[{title:"Strict",recommended:!0,config:{extends:"next/core-web-vitals"}},{title:"Base",config:{extends:"next"}},{title:"Cancel",config:null}],Fe={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},I={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"actionBrowser",api:"api",middleware:"middleware",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",appMetadataRoute:"app-metadata-route"},ke={...I,GROUP:{server:[I.reactServerComponents,I.actionBrowser,I.appMetadataRoute]}},Ge={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"};});var w=chunkDXYBIDVK_js.a((Dt,W)=>{chunkDXYBIDVK_js.c();(()=>{typeof __nccwpck_require__<"u"&&(__nccwpck_require__.ab=__dirname+"/");var n={};(()=>{var e=n;e.parse=i,e.serialize=d;var t=decodeURIComponent,r=encodeURIComponent,s=/; */,o=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;function i(R,g){if(typeof R!="string")throw new TypeError("argument str must be a string");for(var m={},u=g||{},A=R.split(s),T=u.decode||t,c=0;c<A.length;c++){var l=A[c],_=l.indexOf("=");if(!(_<0)){var E=l.substr(0,_).trim(),S=l.substr(++_,l.length).trim();S[0]=='"'&&(S=S.slice(1,-1)),m[E]==null&&(m[E]=f(S,T));}}return m}function d(R,g,m){var u=m||{},A=u.encode||r;if(typeof A!="function")throw new TypeError("option encode is invalid");if(!o.test(R))throw new TypeError("argument name is invalid");var T=A(g);if(T&&!o.test(T))throw new TypeError("argument val is invalid");var c=R+"="+T;if(u.maxAge!=null){var l=u.maxAge-0;if(isNaN(l)||!isFinite(l))throw new TypeError("option maxAge is invalid");c+="; Max-Age="+Math.floor(l);}if(u.domain){if(!o.test(u.domain))throw new TypeError("option domain is invalid");c+="; Domain="+u.domain;}if(u.path){if(!o.test(u.path))throw new TypeError("option path is invalid");c+="; Path="+u.path;}if(u.expires){if(typeof u.expires.toUTCString!="function")throw new TypeError("option expires is invalid");c+="; Expires="+u.expires.toUTCString();}if(u.httpOnly&&(c+="; HttpOnly"),u.secure&&(c+="; Secure"),u.sameSite){var _=typeof u.sameSite=="string"?u.sameSite.toLowerCase():u.sameSite;switch(_){case!0:c+="; SameSite=Strict";break;case"lax":c+="; SameSite=Lax";break;case"strict":c+="; SameSite=Strict";break;case"none":c+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}}return c}function f(R,g){try{return g(R)}catch{return R}}})(),W.exports=n;})();});var K=chunkDXYBIDVK_js.a(U=>{chunkDXYBIDVK_js.c();Object.defineProperty(U,"__esModule",{value:!0});function Ve(n,e){for(var t in e)Object.defineProperty(n,t,{enumerable:!0,get:e[t]});}Ve(U,{getCookieParser:function(){return Ye},sendStatusCode:function(){return $e},redirect:function(){return We},checkIsOnDemandRevalidate:function(){return Xe},COOKIE_NAME_PRERENDER_BYPASS:function(){return v},COOKIE_NAME_PRERENDER_DATA:function(){return H},RESPONSE_LIMIT_DEFAULT:function(){return Ke},SYMBOL_PREVIEW_DATA:function(){return qe},SYMBOL_CLEARED_COOKIES:function(){return b},clearPreviewData:function(){return ze},ApiError:function(){return M},sendError:function(){return Je},setLazyProp:function(){return Ze}});var Be=G(),X=$();function Ye(n){return function(){let{cookie:t}=n;if(!t)return {};let{parse:r}=w();return r(Array.isArray(t)?t.join("; "):t)}}function $e(n,e){return n.statusCode=e,n}function We(n,e,t){if(typeof e=="string"&&(t=e,e=307),typeof e!="number"||typeof t!="string")throw new Error("Invalid redirect arguments. Please use a single argument URL, e.g. res.redirect('/destination') or use a status code and URL, e.g. res.redirect(307, '/destination').");return n.writeHead(e,{Location:t}),n.write(t),n.end(),n}function Xe(n,e){let t=Be.HeadersAdapter.from(n.headers),s=t.get(X.PRERENDER_REVALIDATE_HEADER)===e.previewModeId,o=t.has(X.PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER);return {isOnDemandRevalidate:s,revalidateOnlyGenerated:o}}var v="__prerender_bypass",H="__next_preview_data",Ke=4*1024*1024,qe=Symbol(H),b=Symbol(v);function ze(n,e={}){if(b in n)return n;let{serialize:t}=w(),r=n.getHeader("Set-Cookie");return n.setHeader("Set-Cookie",[...typeof r=="string"?[r]:Array.isArray(r)?r:[],t(v,"",{expires:new Date(0),httpOnly:!0,sameSite:"none",secure:!0,path:"/",...e.path!==void 0?{path:e.path}:void 0}),t(H,"",{expires:new Date(0),httpOnly:!0,sameSite:"none",secure:!0,path:"/",...e.path!==void 0?{path:e.path}:void 0})]),Object.defineProperty(n,b,{value:!0,enumerable:!1}),n}var M=class extends Error{constructor(e,t){super(t),this.statusCode=e;}};function Je(n,e,t){n.statusCode=e,n.statusMessage=t,n.end(t);}function Ze({req:n},e,t){let r={configurable:!0,enumerable:!0},s={...r,writable:!0};Object.defineProperty(n,e,{...r,get:()=>{let o=t();return Object.defineProperty(n,e,{...s,value:o}),o},set:o=>{Object.defineProperty(n,e,{...s,value:o});}});}});chunkDXYBIDVK_js.c();chunkDXYBIDVK_js.c();chunkDXYBIDVK_js.c();var j=chunkDXYBIDVK_js.b(K());chunkDXYBIDVK_js.c();var et=async({adapter:n,query:e,request:t,resourceName:r})=>({data:await n.create(r,t.body,e),status:201}),q=et;chunkDXYBIDVK_js.c();var rt=async({adapter:n,query:e,resourceId:t,resourceName:r})=>{if(typeof await n.getOne(r,t,e)=="object")return {data:await n.delete(r,t,e),status:200};throw Q__default.default(404,`${r} ${t} not found`)},z=rt;chunkDXYBIDVK_js.c();var st=async({adapter:n,pagination:e,query:t,resourceName:r})=>{let s=!1,o;if(t.page!==void 0){if(t.page<=0)throw new Error("page query must be a strictly positive number");o={page:t.page,perPage:t.limit??e.perPage};}o&&(s=!0,t.skip=(o.page-1)*o.perPage,t.limit=o.perPage);let i=await n.getAll(r,t);if(s){let{page:d,total:f}=await n.getPaginationData(r,t);return {data:pagination.paginate(d,o.perPage,f,i).toJSON(),status:200}}return {data:i,status:200}},J=st;chunkDXYBIDVK_js.c();var at=async({adapter:n,query:e,resourceId:t,resourceName:r})=>{let s=await n.getOne(r,t,e);if(typeof s!="object")throw Q__default.default(404,`${r} ${t} not found`);return {data:s,status:200}},Z=at;chunkDXYBIDVK_js.c();var dt=async({adapter:n,query:e,request:t,resourceId:r,resourceName:s})=>{if(typeof await n.getOne(s,r,e)=="object")return {data:await n.update(s,r,t.body,e),status:201};throw Q__default.default(404,`${s} ${r} not found`)},ee=dt;chunkDXYBIDVK_js.c();var te=n=>{let e={};return n.split(",").forEach(r=>{re__default.default(e,r,!0);}),e},ct=n=>{let e=JSON.parse(n),t={};return Object.keys(e).forEach(r=>{re__default.default(t,r,e[r]);}),t},pt=n=>{let e={},t=JSON.parse(n);if(Object.keys(t).length>0){let r=Object.keys(t)[0];(t[r]==="$asc"||t[r]==="$desc")&&(e[r]=t[r]);}if(Object.keys(e).length!==1)throw new Error("orderBy needs to be an object with exactly 1 property with either $asc or $desc value");return e},lt=n=>{if(n){let{searchParams:e}=new url.URL(n),t={};return e.get("select")&&(t.select=te(e.get("select"))),e.get("include")&&(t.include=te(e.get("include"))),e.get("where")&&(t.where=ct(e.get("where"))),e.get("orderBy")&&(t.orderBy=pt(e.get("orderBy"))),e.has("limit")&&(t.limit=Number.isFinite(+e.get("limit"))?+e.get("limit"):void 0),e.has("skip")&&(t.skip=Number.isFinite(+e.get("skip"))?+e.get("skip"):void 0),e.get("distinct")&&(t.distinct=e.get("distinct")),e.get("page")&&(t.page=Number.isFinite(+e.get("page"))?+e.get("page"):void 0),{originalQuery:Object.fromEntries(e.entries()),...t}}return {}},ne=lt;chunkDXYBIDVK_js.c();var Et=n=>Number.isSafeInteger(+n)?+n:n,se=Et;chunkDXYBIDVK_js.c();var Rt=n=>`${n.charAt(0).toLowerCase()}${n.slice(1)}`,oe=(n,e)=>{let t=n.split("?")[0];if(t===void 0)throw new TypeError("Path is undefined");let r=Object.keys(e).find(s=>{let o=e[s],i=Rt(o);return new RegExp(`(${o}|${i}$)|(${o}|${i}/)`,"g").test(t)});if(r===void 0)throw new Error(`Couldn't find model ${r} name for url ${n}`);return {modelName:r,resourceName:e[r]}};chunkDXYBIDVK_js.c();var _t=(n,e,t)=>{let r=e.split("?")[0];if(r===void 0)throw new TypeError("Path is undefined");if(!r.includes(`/${t}`))throw new Error(`invalid resource name '${t}' for route '${r}'`);let s=pathToRegexp.match([`/(.*)/${t}`,`/(.*)/${t}/:id`],{decode:decodeURIComponent}),o=pathToRegexp.match(`/(.*)/${t}`,{decode:decodeURIComponent});switch(n){case"GET":{let i=s(r);return typeof i=="object"&&i.params.id?{resourceId:i.params.id,routeType:"READ_ONE"}:{routeType:"READ_ALL"}}case"POST":return o(r)?{routeType:"CREATE"}:{routeType:null};case"PUT":case"PATCH":{let i=s(r);return typeof i=="object"&&i.params.id?{resourceId:i.params.id,routeType:"UPDATE"}:{routeType:null}}case"DELETE":{let i=s(r);return typeof i=="object"&&i.params.id?{resourceId:i.params.id,routeType:"DELETE"}:{routeType:null}}default:return {routeType:null}}},ie=_t;chunkDXYBIDVK_js.c();var mt=["create","delete","getAll","getOne","parseQuery","update","getPaginationData","getModels"],At=n=>{mt.forEach(e=>{if(!n[e])throw Q__default.default(500,`Adapter must implement the "${e}" method.`)});},de=At;async function Pt(n,e,t,r){try{de(t);}catch(d){let f=d;throw new j.ApiError(f.statusCode,f.message)}await t.init?.();let s={formatResourceId:se,pagination:{perPage:20},...r},o=await t.mapModelsToRouteNames?.(),i={};return t.getModels().forEach(d=>{i[d]=s.models?.[d]?.name??o?.[d]??d;}),async(d,f)=>{let{modelName:R,resourceName:g}=oe(d.url,i);if(!g)throw Q__default.default(404,`Resource not found: ${d.url}`);let{resourceId:m,routeType:u}=ie(d.method,d.url,g);if(u===null)throw Q__default.default(404,`Route not found: ${d.url}`);let A=r?.models?.[R];if(!chunkDXYBIDVK_js.e(A?.only,A?.exclude,r?.exposeStrategy??"all").includes(u))throw Q__default.default(404,`Route not found: ${d.url}`);try{let c=A?.formatResourceId?.(m)??s.formatResourceId(m);await t.connect?.();let l=ne(`https://${d.headers.host?.replace(/\/$/u,"")}/${d.url}`),_={adapter:t,query:t.parseQuery(R,l),resourceName:R};try{let E;switch(u){case"READ_ONE":{E=await(s.handlers?.get??Z)({..._,resourceId:c});break}case"READ_ALL":{E=await(s.handlers?.list??J)({..._,pagination:s.pagination,query:{..._.query,limit:l.limit?Number(l.limit):void 0,page:l.page?Number(l.page):void 0}});break}case"CREATE":{E=await(s.handlers?.create??q)({..._,request:d});break}case"UPDATE":{E=await(s.handlers?.update??ee)({..._,request:d,resourceId:c});break}case"DELETE":{E=await(s.handlers?.delete??z)({..._,resourceId:c});break}default:E={data:"Method not found",status:404};}await n(f,E);}catch(E){if(t.handleError&&!(E instanceof j.ApiError))t.handleError(E);else throw E}}finally{await t.disconnect?.(),await e(f);}}}var h=Pt;var gt=async(n,e)=>await h(async(t,r)=>new Response(JSON.stringify(r.data),{headers:{"content-type":"application/json; charset=utf-8"},status:r.status}),async()=>{},n,e),Tt=gt;chunkDXYBIDVK_js.c();var yt=async(n,e)=>await h(async(t,r)=>{t.status(r.status).send(r.data);},async t=>{t.end();},n,e),St=yt;/*! Bundled license information:
15
+ var k=chunkVKZQ57TC_js.a(L=>{chunkVKZQ57TC_js.c();Object.defineProperty(L,"__esModule",{value:!0});Object.defineProperty(L,"ReflectAdapter",{enumerable:!0,get:function(){return N}});var N=class{static get(e,t,r){let s=Reflect.get(e,t,r);return typeof s=="function"?s.bind(e):s}static set(e,t,r,s){return Reflect.set(e,t,r,s)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}};});var G=chunkVKZQ57TC_js.a(D=>{chunkVKZQ57TC_js.c();Object.defineProperty(D,"__esModule",{value:!0});function ce(n,e){for(var t in e)Object.defineProperty(n,t,{enumerable:!0,get:e[t]});}ce(D,{ReadonlyHeadersError:function(){return O},HeadersAdapter:function(){return C}});var P=k(),O=class n extends Error{constructor(){super("Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers");}static callable(){throw new n}},C=class n extends Headers{constructor(e){super(),this.headers=new Proxy(e,{get(t,r,s){if(typeof r=="symbol")return P.ReflectAdapter.get(t,r,s);let o=r.toLowerCase(),i=Object.keys(e).find(d=>d.toLowerCase()===o);if(!(typeof i>"u"))return P.ReflectAdapter.get(t,i,s)},set(t,r,s,o){if(typeof r=="symbol")return P.ReflectAdapter.set(t,r,s,o);let i=r.toLowerCase(),d=Object.keys(e).find(f=>f.toLowerCase()===i);return P.ReflectAdapter.set(t,d??r,s,o)},has(t,r){if(typeof r=="symbol")return P.ReflectAdapter.has(t,r);let s=r.toLowerCase(),o=Object.keys(e).find(i=>i.toLowerCase()===s);return typeof o>"u"?!1:P.ReflectAdapter.has(t,o)},deleteProperty(t,r){if(typeof r=="symbol")return P.ReflectAdapter.deleteProperty(t,r);let s=r.toLowerCase(),o=Object.keys(e).find(i=>i.toLowerCase()===s);return typeof o>"u"?!0:P.ReflectAdapter.deleteProperty(t,o)}});}static seal(e){return new Proxy(e,{get(t,r,s){switch(r){case"append":case"delete":case"set":return O.callable;default:return P.ReflectAdapter.get(t,r,s)}}})}merge(e){return Array.isArray(e)?e.join(", "):e}static from(e){return e instanceof Headers?e:new n(e)}append(e,t){let r=this.headers[e];typeof r=="string"?this.headers[e]=[r,t]:Array.isArray(r)?r.push(t):this.headers[e]=t;}delete(e){delete this.headers[e];}get(e){let t=this.headers[e];return typeof t<"u"?this.merge(t):null}has(e){return typeof this.headers[e]<"u"}set(e,t){this.headers[e]=t;}forEach(e,t){for(let[r,s]of this.entries())e.call(t,s,r,this);}*entries(){for(let e of Object.keys(this.headers)){let t=e.toLowerCase(),r=this.get(t);yield [t,r];}}*keys(){for(let e of Object.keys(this.headers))yield e.toLowerCase();}*values(){for(let e of Object.keys(this.headers))yield this.get(e);}[Symbol.iterator](){return this.entries()}};});var $=chunkVKZQ57TC_js.a(x=>{chunkVKZQ57TC_js.c();Object.defineProperty(x,"__esModule",{value:!0});function pe(n,e){for(var t in e)Object.defineProperty(n,t,{enumerable:!0,get:e[t]});}pe(x,{NEXT_QUERY_PARAM_PREFIX:function(){return le},PRERENDER_REVALIDATE_HEADER:function(){return Ee},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return Re},CACHE_ONE_YEAR:function(){return _e},MIDDLEWARE_FILENAME:function(){return V},MIDDLEWARE_LOCATION_REGEXP:function(){return fe},INSTRUMENTATION_HOOK_FILENAME:function(){return B},INSTRUMENTATION_HOOKS_LOCATION_REGEXP:function(){return me},PAGES_DIR_ALIAS:function(){return Ae},DOT_NEXT_ALIAS:function(){return Pe},ROOT_DIR_ALIAS:function(){return ge},APP_DIR_ALIAS:function(){return Te},RSC_MOD_REF_PROXY_ALIAS:function(){return ye},RSC_ACTION_VALIDATE_ALIAS:function(){return Se},RSC_ACTION_PROXY_ALIAS:function(){return Oe},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return Ie},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return he},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return Ne},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return Le},SERVER_PROPS_SSG_CONFLICT:function(){return Ce},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return De},SERVER_PROPS_EXPORT_ERROR:function(){return xe},GSP_NO_RETURNED_VALUE:function(){return we},GSSP_NO_RETURNED_VALUE:function(){return be},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return Me},GSSP_COMPONENT_MEMBER_ERROR:function(){return ve},NON_STANDARD_NODE_ENV:function(){return He},SSG_FALLBACK_EXPORT_ERROR:function(){return Ue},ESLINT_DEFAULT_DIRS:function(){return Y},ESLINT_DEFAULT_DIRS_WITH_APP:function(){return Qe},ESLINT_PROMPT_VALUES:function(){return je},SERVER_RUNTIME:function(){return Fe},WEBPACK_LAYERS:function(){return ke},WEBPACK_RESOURCE_QUERIES:function(){return Ge}});var le="nxtP",Ee="x-prerender-revalidate",Re="x-prerender-revalidate-if-generated",_e=31536e3,V="middleware",fe=`(?:src/)?${V}`,B="instrumentation",me=`(?:src/)?${B}`,Ae="private-next-pages",Pe="private-dot-next",ge="private-next-root-dir",Te="private-next-app-dir",ye="private-next-rsc-mod-ref-proxy",Se="private-next-rsc-action-validate",Oe="private-next-rsc-action-proxy",Ie="private-next-rsc-action-client-wrapper",he="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",Ne="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",Le="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",Ce="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",De="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",xe="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",we="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",be="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",Me="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",ve="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",He='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',Ue="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",Y=["pages","components","lib","src"],Qe=["app",...Y],je=[{title:"Strict",recommended:!0,config:{extends:"next/core-web-vitals"}},{title:"Base",config:{extends:"next"}},{title:"Cancel",config:null}],Fe={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},I={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"actionBrowser",api:"api",middleware:"middleware",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",appMetadataRoute:"app-metadata-route"},ke={...I,GROUP:{server:[I.reactServerComponents,I.actionBrowser,I.appMetadataRoute]}},Ge={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"};});var w=chunkVKZQ57TC_js.a((Dt,W)=>{chunkVKZQ57TC_js.c();(()=>{typeof __nccwpck_require__<"u"&&(__nccwpck_require__.ab=__dirname+"/");var n={};(()=>{var e=n;e.parse=i,e.serialize=d;var t=decodeURIComponent,r=encodeURIComponent,s=/; */,o=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;function i(R,g){if(typeof R!="string")throw new TypeError("argument str must be a string");for(var m={},u=g||{},A=R.split(s),T=u.decode||t,c=0;c<A.length;c++){var l=A[c],_=l.indexOf("=");if(!(_<0)){var E=l.substr(0,_).trim(),S=l.substr(++_,l.length).trim();S[0]=='"'&&(S=S.slice(1,-1)),m[E]==null&&(m[E]=f(S,T));}}return m}function d(R,g,m){var u=m||{},A=u.encode||r;if(typeof A!="function")throw new TypeError("option encode is invalid");if(!o.test(R))throw new TypeError("argument name is invalid");var T=A(g);if(T&&!o.test(T))throw new TypeError("argument val is invalid");var c=R+"="+T;if(u.maxAge!=null){var l=u.maxAge-0;if(isNaN(l)||!isFinite(l))throw new TypeError("option maxAge is invalid");c+="; Max-Age="+Math.floor(l);}if(u.domain){if(!o.test(u.domain))throw new TypeError("option domain is invalid");c+="; Domain="+u.domain;}if(u.path){if(!o.test(u.path))throw new TypeError("option path is invalid");c+="; Path="+u.path;}if(u.expires){if(typeof u.expires.toUTCString!="function")throw new TypeError("option expires is invalid");c+="; Expires="+u.expires.toUTCString();}if(u.httpOnly&&(c+="; HttpOnly"),u.secure&&(c+="; Secure"),u.sameSite){var _=typeof u.sameSite=="string"?u.sameSite.toLowerCase():u.sameSite;switch(_){case!0:c+="; SameSite=Strict";break;case"lax":c+="; SameSite=Lax";break;case"strict":c+="; SameSite=Strict";break;case"none":c+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}}return c}function f(R,g){try{return g(R)}catch{return R}}})(),W.exports=n;})();});var K=chunkVKZQ57TC_js.a(U=>{chunkVKZQ57TC_js.c();Object.defineProperty(U,"__esModule",{value:!0});function Ve(n,e){for(var t in e)Object.defineProperty(n,t,{enumerable:!0,get:e[t]});}Ve(U,{getCookieParser:function(){return Ye},sendStatusCode:function(){return $e},redirect:function(){return We},checkIsOnDemandRevalidate:function(){return Xe},COOKIE_NAME_PRERENDER_BYPASS:function(){return v},COOKIE_NAME_PRERENDER_DATA:function(){return H},RESPONSE_LIMIT_DEFAULT:function(){return Ke},SYMBOL_PREVIEW_DATA:function(){return qe},SYMBOL_CLEARED_COOKIES:function(){return b},clearPreviewData:function(){return ze},ApiError:function(){return M},sendError:function(){return Je},setLazyProp:function(){return Ze}});var Be=G(),X=$();function Ye(n){return function(){let{cookie:t}=n;if(!t)return {};let{parse:r}=w();return r(Array.isArray(t)?t.join("; "):t)}}function $e(n,e){return n.statusCode=e,n}function We(n,e,t){if(typeof e=="string"&&(t=e,e=307),typeof e!="number"||typeof t!="string")throw new Error("Invalid redirect arguments. Please use a single argument URL, e.g. res.redirect('/destination') or use a status code and URL, e.g. res.redirect(307, '/destination').");return n.writeHead(e,{Location:t}),n.write(t),n.end(),n}function Xe(n,e){let t=Be.HeadersAdapter.from(n.headers),s=t.get(X.PRERENDER_REVALIDATE_HEADER)===e.previewModeId,o=t.has(X.PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER);return {isOnDemandRevalidate:s,revalidateOnlyGenerated:o}}var v="__prerender_bypass",H="__next_preview_data",Ke=4*1024*1024,qe=Symbol(H),b=Symbol(v);function ze(n,e={}){if(b in n)return n;let{serialize:t}=w(),r=n.getHeader("Set-Cookie");return n.setHeader("Set-Cookie",[...typeof r=="string"?[r]:Array.isArray(r)?r:[],t(v,"",{expires:new Date(0),httpOnly:!0,sameSite:"none",secure:!0,path:"/",...e.path!==void 0?{path:e.path}:void 0}),t(H,"",{expires:new Date(0),httpOnly:!0,sameSite:"none",secure:!0,path:"/",...e.path!==void 0?{path:e.path}:void 0})]),Object.defineProperty(n,b,{value:!0,enumerable:!1}),n}var M=class extends Error{constructor(e,t){super(t),this.statusCode=e;}};function Je(n,e,t){n.statusCode=e,n.statusMessage=t,n.end(t);}function Ze({req:n},e,t){let r={configurable:!0,enumerable:!0},s={...r,writable:!0};Object.defineProperty(n,e,{...r,get:()=>{let o=t();return Object.defineProperty(n,e,{...s,value:o}),o},set:o=>{Object.defineProperty(n,e,{...s,value:o});}});}});chunkVKZQ57TC_js.c();chunkVKZQ57TC_js.c();chunkVKZQ57TC_js.c();var j=chunkVKZQ57TC_js.b(K());chunkVKZQ57TC_js.c();var et=async({adapter:n,query:e,request:t,resourceName:r})=>({data:await n.create(r,t.body,e),status:201}),q=et;chunkVKZQ57TC_js.c();var rt=async({adapter:n,query:e,resourceId:t,resourceName:r})=>{if(typeof await n.getOne(r,t,e)=="object")return {data:await n.delete(r,t,e),status:200};throw Q__default.default(404,`${r} ${t} not found`)},z=rt;chunkVKZQ57TC_js.c();var st=async({adapter:n,pagination:e,query:t,resourceName:r})=>{let s=!1,o;if(t.page!==void 0){if(t.page<=0)throw new Error("page query must be a strictly positive number");o={page:t.page,perPage:t.limit??e.perPage};}o&&(s=!0,t.skip=(o.page-1)*o.perPage,t.limit=o.perPage);let i=await n.getAll(r,t);if(s){let{page:d,total:f}=await n.getPaginationData(r,t);return {data:pagination.paginate(d,o.perPage,f,i).toJSON(),status:200}}return {data:i,status:200}},J=st;chunkVKZQ57TC_js.c();var at=async({adapter:n,query:e,resourceId:t,resourceName:r})=>{let s=await n.getOne(r,t,e);if(typeof s!="object")throw Q__default.default(404,`${r} ${t} not found`);return {data:s,status:200}},Z=at;chunkVKZQ57TC_js.c();var dt=async({adapter:n,query:e,request:t,resourceId:r,resourceName:s})=>{if(typeof await n.getOne(s,r,e)=="object")return {data:await n.update(s,r,t.body,e),status:201};throw Q__default.default(404,`${s} ${r} not found`)},ee=dt;chunkVKZQ57TC_js.c();var te=n=>{let e={};return n.split(",").forEach(r=>{re__default.default(e,r,!0);}),e},ct=n=>{let e=JSON.parse(n),t={};return Object.keys(e).forEach(r=>{re__default.default(t,r,e[r]);}),t},pt=n=>{let e={},t=JSON.parse(n);if(Object.keys(t).length>0){let r=Object.keys(t)[0];(t[r]==="$asc"||t[r]==="$desc")&&(e[r]=t[r]);}if(Object.keys(e).length!==1)throw new Error("orderBy needs to be an object with exactly 1 property with either $asc or $desc value");return e},lt=n=>{if(n){let{searchParams:e}=new url.URL(n),t={};return e.get("select")&&(t.select=te(e.get("select"))),e.get("include")&&(t.include=te(e.get("include"))),e.get("where")&&(t.where=ct(e.get("where"))),e.get("orderBy")&&(t.orderBy=pt(e.get("orderBy"))),e.has("limit")&&(t.limit=Number.isFinite(+e.get("limit"))?+e.get("limit"):void 0),e.has("skip")&&(t.skip=Number.isFinite(+e.get("skip"))?+e.get("skip"):void 0),e.get("distinct")&&(t.distinct=e.get("distinct")),e.get("page")&&(t.page=Number.isFinite(+e.get("page"))?+e.get("page"):void 0),{originalQuery:Object.fromEntries(e.entries()),...t}}return {}},ne=lt;chunkVKZQ57TC_js.c();var Et=n=>Number.isSafeInteger(+n)?+n:n,se=Et;chunkVKZQ57TC_js.c();var Rt=n=>`${n.charAt(0).toLowerCase()}${n.slice(1)}`,oe=(n,e)=>{let t=n.split("?")[0];if(t===void 0)throw new TypeError("Path is undefined");let r=Object.keys(e).find(s=>{let o=e[s],i=Rt(o);return new RegExp(`(${o}|${i}$)|(${o}|${i}/)`,"g").test(t)});if(r===void 0)throw new Error(`Couldn't find model ${r} name for url ${n}`);return {modelName:r,resourceName:e[r]}};chunkVKZQ57TC_js.c();var _t=(n,e,t)=>{let r=e.split("?")[0];if(r===void 0)throw new TypeError("Path is undefined");if(!r.includes(`/${t}`))throw new Error(`invalid resource name '${t}' for route '${r}'`);let s=pathToRegexp.match([`/(.*)/${t}`,`/(.*)/${t}/:id`],{decode:decodeURIComponent}),o=pathToRegexp.match(`/(.*)/${t}`,{decode:decodeURIComponent});switch(n){case"GET":{let i=s(r);return typeof i=="object"&&i.params.id?{resourceId:i.params.id,routeType:"READ_ONE"}:{routeType:"READ_ALL"}}case"POST":return o(r)?{routeType:"CREATE"}:{routeType:null};case"PUT":case"PATCH":{let i=s(r);return typeof i=="object"&&i.params.id?{resourceId:i.params.id,routeType:"UPDATE"}:{routeType:null}}case"DELETE":{let i=s(r);return typeof i=="object"&&i.params.id?{resourceId:i.params.id,routeType:"DELETE"}:{routeType:null}}default:return {routeType:null}}},ie=_t;chunkVKZQ57TC_js.c();var mt=["create","delete","getAll","getOne","parseQuery","update","getPaginationData","getModels"],At=n=>{mt.forEach(e=>{if(!n[e])throw Q__default.default(500,`Adapter must implement the "${e}" method.`)});},de=At;async function Pt(n,e,t,r){try{de(t);}catch(d){let f=d;throw new j.ApiError(f.statusCode,f.message)}await t.init?.();let s={formatResourceId:se,pagination:{perPage:20},...r},o=await t.mapModelsToRouteNames?.(),i={};return t.getModels().forEach(d=>{i[d]=s.models?.[d]?.name??o?.[d]??d;}),async(d,f)=>{let{modelName:R,resourceName:g}=oe(d.url,i);if(!g)throw Q__default.default(404,`Resource not found: ${d.url}`);let{resourceId:m,routeType:u}=ie(d.method,d.url,g);if(u===null)throw Q__default.default(404,`Route not found: ${d.url}`);let A=r?.models?.[R];if(!chunkVKZQ57TC_js.e(A?.only,A?.exclude,r?.exposeStrategy??"all").includes(u))throw Q__default.default(404,`Route not found: ${d.url}`);try{let c=A?.formatResourceId?.(m)??s.formatResourceId(m);await t.connect?.();let l=ne(`https://${d.headers.host?.replace(/\/$/u,"")}/${d.url}`),_={adapter:t,query:t.parseQuery(R,l),resourceName:R};try{let E;switch(u){case"READ_ONE":{E=await(s.handlers?.get??Z)({..._,resourceId:c});break}case"READ_ALL":{E=await(s.handlers?.list??J)({..._,pagination:s.pagination,query:{..._.query,limit:l.limit?Number(l.limit):void 0,page:l.page?Number(l.page):void 0}});break}case"CREATE":{E=await(s.handlers?.create??q)({..._,request:d});break}case"UPDATE":{E=await(s.handlers?.update??ee)({..._,request:d,resourceId:c});break}case"DELETE":{E=await(s.handlers?.delete??z)({..._,resourceId:c});break}default:E={data:"Method not found",status:404};}await n(f,E);}catch(E){if(t.handleError&&!(E instanceof j.ApiError))t.handleError(E);else throw E}}finally{await t.disconnect?.(),await e(f);}}}var h=Pt;var gt=async(n,e)=>await h(async(t,r)=>new Response(JSON.stringify(r.data),{headers:{"content-type":"application/json; charset=utf-8"},status:r.status}),async()=>{},n,e),Tt=gt;chunkVKZQ57TC_js.c();var yt=async(n,e)=>await h(async(t,r)=>{t.status(r.status).send(r.data);},async t=>{t.end();},n,e),St=yt;/*! Bundled license information:
16
16
 
17
17
  next/dist/compiled/cookie/index.js:
18
18
  (*!
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../node_modules/.pnpm/next@13.4.15_@babel+core@7.23.5_react-dom@18.2.0_react@18.2.0/node_modules/next/src/server/web/spec-extension/adapters/reflect.ts","../../../../node_modules/.pnpm/next@13.4.15_@babel+core@7.23.5_react-dom@18.2.0_react@18.2.0/node_modules/next/src/server/web/spec-extension/adapters/headers.ts","../../../../node_modules/.pnpm/next@13.4.15_@babel+core@7.23.5_react-dom@18.2.0_react@18.2.0/node_modules/next/src/lib/constants.ts","../../../../node_modules/.pnpm/next@13.4.15_@babel+core@7.23.5_react-dom@18.2.0_react@18.2.0/node_modules/next/dist/compiled/cookie/index.js","../../../../node_modules/.pnpm/next@13.4.15_@babel+core@7.23.5_react-dom@18.2.0_react@18.2.0/node_modules/next/src/server/api-utils/index.ts","../../src/next/index.ts","../../src/next/api/edge/index.ts","../../src/base-crud-handler.ts","../../src/handler/create.ts","../../src/handler/delete.ts","../../src/handler/list.ts","../../src/handler/read.ts","../../src/handler/update.ts","../../src/query-parser.ts","../../src/utils/format-resource-id.ts","../../src/utils/get-resource-name-from-url.ts","../../src/utils/get-route-type.ts","../../src/utils/validate-adapter-methods.ts","../../src/next/api/node/index.ts"],"names":["ReflectAdapter","get","target","prop","receiver","value","Reflect","bind","set","has","deleteProperty","ReadonlyHeadersError","HeadersAdapter","Error","constructor","callable","Headers","headers","Proxy","lowercased","toLowerCase","original","Object","keys","find","o","seal","merge","Array","isArray","join","from","append","name","existing","push","delete","forEach","callbackfn","thisArg","entries","call","key","values","Symbol","iterator","NEXT_QUERY_PARAM_PREFIX","PRERENDER_REVALIDATE_HEADER","PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER","CACHE_ONE_YEAR","MIDDLEWARE_FILENAME","MIDDLEWARE_LOCATION_REGEXP","INSTRUMENTATION_HOOK_FILENAME","INSTRUMENTATION_HOOKS_LOCATION_REGEXP","PAGES_DIR_ALIAS","DOT_NEXT_ALIAS","ROOT_DIR_ALIAS","APP_DIR_ALIAS","RSC_MOD_REF_PROXY_ALIAS","RSC_ACTION_VALIDATE_ALIAS","RSC_ACTION_PROXY_ALIAS","RSC_ACTION_CLIENT_WRAPPER_ALIAS","PUBLIC_DIR_MIDDLEWARE_CONFLICT","SSG_GET_INITIAL_PROPS_CONFLICT","SERVER_PROPS_GET_INIT_PROPS_CONFLICT","SERVER_PROPS_SSG_CONFLICT","STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR","SERVER_PROPS_EXPORT_ERROR","GSP_NO_RETURNED_VALUE","GSSP_NO_RETURNED_VALUE","UNSTABLE_REVALIDATE_RENAME_ERROR","GSSP_COMPONENT_MEMBER_ERROR","NON_STANDARD_NODE_ENV","SSG_FALLBACK_EXPORT_ERROR","ESLINT_DEFAULT_DIRS","ESLINT_DEFAULT_DIRS_WITH_APP","ESLINT_PROMPT_VALUES","SERVER_RUNTIME","WEBPACK_LAYERS","WEBPACK_RESOURCE_QUERIES","title","recommended","config","extends","edge","experimentalEdge","nodejs","WEBPACK_LAYERS_NAMES","shared","reactServerComponents","serverSideRendering","actionBrowser","api","middleware","edgeAsset","appPagesBrowser","appMetadataRoute","GROUP","server","edgeSSREntry","metadata","metadataRoute","metadataImageMeta","require_cookie","__commonJSMin","exports","module","init_cjs_shims","e","r","parse","serialize","i","t","a","n","s","p","f","u","v","c","tryDecode","getCookieParser","sendStatusCode","redirect","checkIsOnDemandRevalidate","COOKIE_NAME_PRERENDER_BYPASS","COOKIE_NAME_PRERENDER_DATA","RESPONSE_LIMIT_DEFAULT","SYMBOL_PREVIEW_DATA","SYMBOL_CLEARED_COOKIES","clearPreviewData","ApiError","sendError","setLazyProp","cookie","parseCookieFn","require","res","statusCode","statusOrUrl","url","writeHead","Location","write","end","req","previewProps","isOnDemandRevalidate","previewModeId","revalidateOnlyGenerated","options","previous","getHeader","setHeader","expires","Date","httpOnly","sameSite","secure","process","path","undefined","defineProperty","enumerable","message","statusMessage","getter","opts","configurable","optsReset","writable","import_api_utils","createHttpError","createHandler","adapter","query","request","resourceName","create_default","deleteHandler","resourceId","delete_default","paginate","listHandler","pagination","isPaginated","paginationOptions","resources","page","total","list_default","readHandler","resource","read_default","updateHandler","update_default","URL","parseRecursive","select","selectFields","field","parseWhere","where","whereObject","parsed","parseOrderBy","orderBy","orderByObject","parseQuery","searchParams","parsedQuery","query_parser_default","formatResourceId","format_resource_id_default","ensureCamelCase","string_","getResourceNameFromUrl","models","realPath","modelName","routeName","camelCaseModel","match","getRouteType","method","entityMatcher","simpleMatcher","pathMatch","get_route_type_default","adapterMethods","validateAdapterMethods","validate_adapter_methods_default","baseHandler","responseExecutor","finalExecutor","error_","error","routeNames","modelRoutes","responseOrContext","routeType","modelConfig","get_accessible_routes_default","resourceIdFormatted","parameters","responseConfig","base_crud_handler_default","handler","_","edge_default","response","node_default"],"mappings":"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","sourcesContent":[null,null,null,"(()=>{\"use strict\";if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var e={};(()=>{var r=e;\n/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */r.parse=parse;r.serialize=serialize;var i=decodeURIComponent;var t=encodeURIComponent;var a=/; */;var n=/^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;function parse(e,r){if(typeof e!==\"string\"){throw new TypeError(\"argument str must be a string\")}var t={};var n=r||{};var o=e.split(a);var s=n.decode||i;for(var p=0;p<o.length;p++){var f=o[p];var u=f.indexOf(\"=\");if(u<0){continue}var v=f.substr(0,u).trim();var c=f.substr(++u,f.length).trim();if('\"'==c[0]){c=c.slice(1,-1)}if(undefined==t[v]){t[v]=tryDecode(c,s)}}return t}function serialize(e,r,i){var a=i||{};var o=a.encode||t;if(typeof o!==\"function\"){throw new TypeError(\"option encode is invalid\")}if(!n.test(e)){throw new TypeError(\"argument name is invalid\")}var s=o(r);if(s&&!n.test(s)){throw new TypeError(\"argument val is invalid\")}var p=e+\"=\"+s;if(null!=a.maxAge){var f=a.maxAge-0;if(isNaN(f)||!isFinite(f)){throw new TypeError(\"option maxAge is invalid\")}p+=\"; Max-Age=\"+Math.floor(f)}if(a.domain){if(!n.test(a.domain)){throw new TypeError(\"option domain is invalid\")}p+=\"; Domain=\"+a.domain}if(a.path){if(!n.test(a.path)){throw new TypeError(\"option path is invalid\")}p+=\"; Path=\"+a.path}if(a.expires){if(typeof a.expires.toUTCString!==\"function\"){throw new TypeError(\"option expires is invalid\")}p+=\"; Expires=\"+a.expires.toUTCString()}if(a.httpOnly){p+=\"; HttpOnly\"}if(a.secure){p+=\"; Secure\"}if(a.sameSite){var u=typeof a.sameSite===\"string\"?a.sameSite.toLowerCase():a.sameSite;switch(u){case true:p+=\"; SameSite=Strict\";break;case\"lax\":p+=\"; SameSite=Lax\";break;case\"strict\":p+=\"; SameSite=Strict\";break;case\"none\":p+=\"; SameSite=None\";break;default:throw new TypeError(\"option sameSite is invalid\")}}return p}function tryDecode(e,r){try{return r(e)}catch(r){return e}}})();module.exports=e})();",null,"export { default as edgeHandler } from \"./api/edge\";\nexport { default as nodeHandler } from \"./api/node\";\n","import baseHandler from \"../../../base-crud-handler\";\nimport type { Adapter, ExecuteHandler, HandlerOptions, ParsedQueryParameters } from \"../../../types.d\";\n\nconst handler = async <T, R extends Request, Context, Q extends ParsedQueryParameters = any, M extends string = string>(\n adapter: Adapter<T, Q>,\n options?: HandlerOptions<M>,\n): Promise<ExecuteHandler<R, Context>> =>\n await baseHandler<R, Context, T, Q, M>(\n async (_, responseConfig) =>\n new Response(JSON.stringify(responseConfig.data), {\n headers: {\n \"content-type\": \"application/json; charset=utf-8\",\n },\n status: responseConfig.status,\n }),\n async () => {},\n adapter,\n options,\n );\n\nexport default handler;\n","import type { IncomingMessage, ServerResponse } from \"node:http\";\n\nimport type { HttpError } from \"http-errors\";\nimport createHttpError from \"http-errors\";\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { ApiError } from \"next/dist/server/api-utils\";\n\nimport createHandler from \"./handler/create\";\nimport deleteHandler from \"./handler/delete\";\nimport listHandler from \"./handler/list\";\nimport readHandler from \"./handler/read\";\nimport updateHandler from \"./handler/update\";\nimport parseQuery from \"./query-parser\";\nimport type { Adapter, ExecuteHandler, HandlerOptions, HandlerParameters, ParsedQueryParameters } from \"./types.d\";\nimport { RouteType } from \"./types.d\";\nimport formatResourceId from \"./utils/format-resource-id\";\nimport getAccessibleRoutes from \"./utils/get-accessible-routes\";\nimport { getResourceNameFromUrl } from \"./utils/get-resource-name-from-url\";\nimport getRouteType from \"./utils/get-route-type\";\nimport validateAdapterMethods from \"./utils/validate-adapter-methods\";\n\ninterface ResponseConfig {\n data: any;\n status: number;\n}\n\nasync function baseHandler<R extends Request, Context, T, Q extends ParsedQueryParameters = any, M extends string = string>(\n responseExecutor: (responseOrContext: Context, responseConfig: ResponseConfig) => Promise<Response>,\n finalExecutor: (responseOrContext: Context) => Promise<void>,\n adapter: Adapter<T, Q>,\n options?: HandlerOptions<M>,\n): Promise<ExecuteHandler<R, Context>>;\n\nasync function baseHandler<R extends IncomingMessage, RResponse extends ServerResponse, T, Q extends ParsedQueryParameters = any, M extends string = string>(\n responseExecutor: (responseOrContext: RResponse, responseConfig: ResponseConfig) => Promise<void>,\n finalExecutor: (responseOrContext: RResponse) => Promise<void>,\n adapter: Adapter<T, Q>,\n options?: HandlerOptions<M>,\n): Promise<ExecuteHandler<R, RResponse>>;\n\n// eslint-disable-next-line sonarjs/cognitive-complexity,func-style\nasync function baseHandler<\n R extends { headers: { host?: string }; method: string; url: string },\n RResponse,\n T,\n Q extends ParsedQueryParameters = any,\n M extends string = string,\n>(\n responseExecutor: (responseOrContext: RResponse, responseConfig: ResponseConfig) => Promise<RResponse>,\n finalExecutor: (responseOrContext: RResponse) => Promise<void>,\n adapter: Adapter<T, Q>,\n options?: HandlerOptions<M>,\n): Promise<ExecuteHandler<R, RResponse>> {\n try {\n validateAdapterMethods(adapter);\n } catch (error_: any) {\n const error = error_ as HttpError;\n\n throw new ApiError(error.statusCode, error.message);\n }\n\n await adapter.init?.();\n\n const config = {\n formatResourceId,\n pagination: {\n perPage: 20,\n },\n ...options,\n };\n\n const routeNames = await adapter.mapModelsToRouteNames?.();\n const modelRoutes: { [key in M]?: string } = {};\n\n adapter.getModels().forEach((modelName) => {\n modelRoutes[modelName as M] = config.models?.[modelName as M]?.name ?? routeNames?.[modelName] ?? modelName;\n });\n\n return async (request, responseOrContext) => {\n const { modelName, resourceName } = getResourceNameFromUrl(request.url, modelRoutes as { [key in M]: string });\n\n if (!resourceName) {\n if (process.env.NODE_ENV === \"development\") {\n const mappedModels = await adapter.mapModelsToRouteNames?.();\n\n if (typeof mappedModels === \"object\") {\n throw createHttpError(404, `Resource not found, possible models: ${Object.values(mappedModels).join(\", \")}`);\n }\n }\n\n throw createHttpError(404, `Resource not found: ${request.url}`);\n }\n\n const { resourceId, routeType } = getRouteType(request.method, request.url, resourceName);\n\n if (routeType === null) {\n throw createHttpError(404, `Route not found: ${request.url}`);\n }\n\n const modelConfig = options?.models?.[modelName as M];\n\n const accessibleRoutes = getAccessibleRoutes(modelConfig?.only, modelConfig?.exclude, options?.exposeStrategy ?? \"all\");\n\n if (!accessibleRoutes.includes(routeType)) {\n throw createHttpError(404, `Route not found: ${request.url}`);\n }\n\n try {\n const resourceIdFormatted = modelConfig?.formatResourceId?.(resourceId as string) ?? config.formatResourceId(resourceId as string);\n\n await adapter.connect?.();\n\n const parsedQuery = parseQuery(`https://${request.headers.host?.replace(/\\/$/u, \"\")}/${request.url}`);\n const parameters: HandlerParameters<T, Q> = {\n adapter,\n query: adapter.parseQuery(modelName as M, parsedQuery),\n resourceName: modelName,\n };\n\n try {\n let responseConfig: ResponseConfig;\n\n switch (routeType) {\n case RouteType.READ_ONE: {\n responseConfig = await (config.handlers?.get ?? readHandler)<T, Q>({\n ...parameters,\n resourceId: resourceIdFormatted,\n });\n break;\n }\n case RouteType.READ_ALL: {\n responseConfig = await (config.handlers?.list ?? listHandler)<T, Q>({\n ...parameters,\n pagination: config.pagination,\n query: {\n ...parameters.query,\n limit: parsedQuery.limit ? Number(parsedQuery.limit) : undefined,\n page: parsedQuery.page ? Number(parsedQuery.page) : undefined,\n },\n });\n break;\n }\n case RouteType.CREATE: {\n responseConfig = await (config.handlers?.create ?? createHandler)<T, Q, R>({\n ...parameters,\n request: request as R & { body: Record<string, any> },\n });\n break;\n }\n case RouteType.UPDATE: {\n responseConfig = await (config.handlers?.update ?? updateHandler)<T, Q, R>({\n ...parameters,\n request: request as R & { body: Partial<T> },\n resourceId: resourceIdFormatted,\n });\n break;\n }\n case RouteType.DELETE: {\n responseConfig = await (config.handlers?.delete ?? deleteHandler)<T, Q>({\n ...parameters,\n resourceId: resourceIdFormatted,\n });\n break;\n }\n default: {\n responseConfig = {\n data: \"Method not found\",\n status: 404,\n };\n }\n }\n\n await responseExecutor(responseOrContext, responseConfig);\n } catch (error: any) {\n if (adapter.handleError && !(error instanceof ApiError)) {\n adapter.handleError(error);\n } else {\n throw error;\n }\n }\n } finally {\n await adapter.disconnect?.();\n\n await finalExecutor(responseOrContext);\n }\n };\n}\n\nexport default baseHandler;\n","import type { HandlerParameters } from \"../types.d\";\n\nconst createHandler: Handler = async ({ adapter, query, request, resourceName }) => {\n const resources = await adapter.create(resourceName, request.body, query);\n\n return {\n data: resources,\n status: 201,\n };\n};\n\nexport type Handler = <T, Q, Request>(\n parameters: HandlerParameters<T, Q> & { request: Request & { body: Record<string, any> } },\n) => Promise<{\n data: any;\n status: number;\n}>;\n\nexport default createHandler;\n","import createHttpError from \"http-errors\";\n\nimport type { UniqueResourceHandlerParameters } from \"../types.d\";\n\nconst deleteHandler: Handler = async ({ adapter, query, resourceId, resourceName }) => {\n const resource = await adapter.getOne(resourceName, resourceId, query);\n\n if (typeof resource === \"object\") {\n const deletedResource = await adapter.delete(resourceName, resourceId, query);\n\n return {\n data: deletedResource,\n status: 200,\n };\n }\n\n throw createHttpError(404, `${resourceName} ${resourceId} not found`);\n};\n\nexport type Handler = <T, Q>(\n parameters: UniqueResourceHandlerParameters<T, Q>,\n) => Promise<{\n data: any;\n status: number;\n}>;\nexport default deleteHandler;\n","import { paginate } from \"@visulima/pagination\";\n\nimport type { HandlerParameters, PaginationConfig, ParsedQueryParameters } from \"../types.d\";\n\ninterface PaginationOptions {\n page: number;\n perPage: number;\n}\n\nconst listHandler: Handler = async ({ adapter, pagination, query, resourceName }) => {\n let isPaginated = false;\n let paginationOptions: PaginationOptions | undefined;\n\n if (query.page !== undefined) {\n if (query.page <= 0) {\n throw new Error(\"page query must be a strictly positive number\");\n }\n\n paginationOptions = {\n page: query.page,\n perPage: query.limit ?? pagination.perPage,\n };\n }\n\n if (paginationOptions) {\n isPaginated = true;\n\n // eslint-disable-next-line no-param-reassign\n query.skip = (paginationOptions.page - 1) * paginationOptions.perPage;\n // eslint-disable-next-line no-param-reassign\n query.limit = paginationOptions.perPage;\n }\n\n const resources = await adapter.getAll(resourceName, query);\n\n if (isPaginated) {\n const { page, total } = await adapter.getPaginationData(resourceName, query);\n\n const paginator = paginate(page, (paginationOptions as PaginationOptions).perPage, total, resources);\n\n return {\n data: paginator.toJSON(),\n status: 200,\n };\n }\n\n return {\n data: resources,\n status: 200,\n };\n};\n\nexport type Handler = <T, Q extends ParsedQueryParameters>(\n parameters: HandlerParameters<T, Q> & { pagination: PaginationConfig },\n) => Promise<{\n data: any;\n status: number;\n}>;\n\nexport default listHandler;\n","import createHttpError from \"http-errors\";\n\nimport type { UniqueResourceHandlerParameters } from \"../types.d\";\n\nconst readHandler: Handler = async ({ adapter, query, resourceId, resourceName }) => {\n const resource = await adapter.getOne(resourceName, resourceId, query);\n\n if (typeof resource !== \"object\") {\n throw createHttpError(404, `${resourceName} ${resourceId} not found`);\n }\n\n return {\n data: resource,\n status: 200,\n };\n};\n\nexport type Handler = <T, Q>(\n parameters: UniqueResourceHandlerParameters<T, Q>,\n) => Promise<{\n data: any;\n status: number;\n}>;\n\nexport default readHandler;\n","import createHttpError from \"http-errors\";\n\nimport type { UniqueResourceHandlerParameters } from \"../types.d\";\n\nconst updateHandler: Handler = async ({ adapter, query, request, resourceId, resourceName }) => {\n const resource = await adapter.getOne(resourceName, resourceId, query);\n\n if (typeof resource === \"object\") {\n const updatedResource = await adapter.update(resourceName, resourceId, request.body, query);\n\n return {\n data: updatedResource,\n status: 201,\n };\n }\n\n throw createHttpError(404, `${resourceName} ${resourceId} not found`);\n};\n\nexport type Handler = <T, Q, Request>(\n parameters: UniqueResourceHandlerParameters<T, Q> & { request: Request & { body: Partial<T> } },\n) => Promise<{\n data: any;\n status: number;\n}>;\n\nexport default updateHandler;\n","import { URL } from \"node:url\";\n\n// eslint-disable-next-line no-restricted-imports\nimport set from \"lodash.set\";\n\nimport type { OrderByField, ParsedQueryParameters, RecursiveField, WhereField } from \"./types.d\";\n\nconst parseRecursive = (select: string): RecursiveField => {\n const selectFields: RecursiveField = {};\n\n const fields = select.split(\",\");\n\n fields.forEach((field) => {\n set(selectFields, field, true);\n });\n\n return selectFields;\n};\n\nconst parseWhere = (where: string): WhereField => {\n const whereObject = JSON.parse(where);\n const parsed: WhereField = {};\n\n Object.keys(whereObject).forEach((key) => {\n set(parsed, key, whereObject[key]);\n });\n\n return parsed;\n};\n\nconst parseOrderBy = (orderBy: string): OrderByField => {\n const parsed: OrderByField = {};\n const orderByObject = JSON.parse(orderBy);\n\n if (Object.keys(orderByObject).length > 0) {\n const key = Object.keys(orderByObject)[0] as string;\n\n if (orderByObject[key as keyof typeof orderByObject] === \"$asc\" || orderByObject[key as keyof typeof orderByObject] === \"$desc\") {\n parsed[key] = orderByObject[key as keyof typeof orderByObject];\n }\n }\n\n if (Object.keys(parsed).length !== 1) {\n throw new Error(\"orderBy needs to be an object with exactly 1 property with either $asc or $desc value\");\n }\n\n return parsed;\n};\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst parseQuery = (url?: string): ParsedQueryParameters => {\n if (url) {\n const { searchParams } = new URL(url);\n const parsedQuery: ParsedQueryParameters = {};\n\n if (searchParams.get(\"select\")) {\n parsedQuery.select = parseRecursive(searchParams.get(\"select\") as string);\n }\n\n if (searchParams.get(\"include\")) {\n parsedQuery.include = parseRecursive(searchParams.get(\"include\") as string);\n }\n\n if (searchParams.get(\"where\")) {\n parsedQuery.where = parseWhere(searchParams.get(\"where\") as string);\n }\n\n if (searchParams.get(\"orderBy\")) {\n parsedQuery.orderBy = parseOrderBy(searchParams.get(\"orderBy\") as string);\n }\n\n if (searchParams.has(\"limit\")) {\n parsedQuery.limit = Number.isFinite(+(searchParams.get(\"limit\") as string)) ? +(searchParams.get(\"limit\") as string) : undefined;\n }\n\n if (searchParams.has(\"skip\")) {\n parsedQuery.skip = Number.isFinite(+(searchParams.get(\"skip\") as string)) ? +(searchParams.get(\"skip\") as string) : undefined;\n }\n\n if (searchParams.get(\"distinct\")) {\n parsedQuery.distinct = searchParams.get(\"distinct\") as string;\n }\n\n if (searchParams.get(\"page\")) {\n parsedQuery.page = Number.isFinite(+(searchParams.get(\"page\") as string)) ? +(searchParams.get(\"page\") as string) : undefined;\n }\n\n return {\n originalQuery: Object.fromEntries(searchParams.entries()),\n ...parsedQuery,\n };\n }\n\n return {};\n};\n\nexport default parseQuery;\n","const formatResourceId = (resourceId: string): number | string => (Number.isSafeInteger(+resourceId) ? +resourceId : resourceId);\n\nexport default formatResourceId;\n","export const ensureCamelCase = (string_: string): string => `${string_.charAt(0).toLowerCase()}${string_.slice(1)}`;\n\nexport const getResourceNameFromUrl = <M extends string = string>(\n url: string,\n models: { [key in M]: string },\n): {\n modelName: string;\n resourceName: string;\n} => {\n // Exclude the query params from the path\n const realPath = url.split(\"?\")[0];\n\n if (realPath === undefined) {\n throw new TypeError(\"Path is undefined\");\n }\n\n const modelName = (Object.keys(models) as M[]).find((name) => {\n const routeName = models[name];\n const camelCaseModel = ensureCamelCase(routeName);\n\n // eslint-disable-next-line @rushstack/security/no-unsafe-regexp,security/detect-non-literal-regexp\n return new RegExp(`(${routeName}|${camelCaseModel}$)|(${routeName}|${camelCaseModel}/)`, \"g\").test(realPath);\n });\n\n if (modelName === undefined) {\n throw new Error(`Couldn't find model ${modelName} name for url ${url}`);\n }\n\n return {\n modelName,\n resourceName: models[modelName],\n };\n};\n","import { match } from \"path-to-regexp\";\n\nimport { RouteType } from \"../types.d\";\n\ninterface PathMatch {\n id: string;\n}\n\nconst getRouteType: (method: string, url: string, resourceName: string) => GetRouteType = (method, url, resourceName) => {\n // Exclude the query params from the path\n const realPath = url.split(\"?\")[0];\n\n if (realPath === undefined) {\n throw new TypeError(\"Path is undefined\");\n }\n\n if (!realPath.includes(`/${resourceName}`)) {\n throw new Error(`invalid resource name '${resourceName}' for route '${realPath}'`);\n }\n\n const entityMatcher = match<PathMatch>([`/(.*)/${resourceName}`, `/(.*)/${resourceName}/:id`], { decode: decodeURIComponent });\n const simpleMatcher = match(`/(.*)/${resourceName}`, {\n decode: decodeURIComponent,\n });\n\n switch (method) {\n case \"GET\": {\n const pathMatch = entityMatcher(realPath);\n\n // If we got a /something after the resource name, we are reading 1 entity\n if (typeof pathMatch === \"object\" && pathMatch.params.id) {\n return {\n resourceId: pathMatch.params.id,\n routeType: RouteType.READ_ONE,\n };\n }\n\n return {\n routeType: RouteType.READ_ALL,\n };\n }\n case \"POST\": {\n const pathMatch = simpleMatcher(realPath);\n\n if (pathMatch) {\n return {\n routeType: RouteType.CREATE,\n };\n }\n\n return {\n routeType: null,\n };\n }\n case \"PUT\":\n case \"PATCH\": {\n const pathMatch = entityMatcher(realPath);\n\n if (typeof pathMatch === \"object\" && pathMatch.params.id) {\n return {\n resourceId: pathMatch.params.id,\n routeType: RouteType.UPDATE,\n };\n }\n\n return {\n routeType: null,\n };\n }\n case \"DELETE\": {\n const pathMatch = entityMatcher(realPath);\n\n if (typeof pathMatch === \"object\" && pathMatch.params.id) {\n return {\n resourceId: pathMatch.params.id,\n routeType: RouteType.DELETE,\n };\n }\n\n return {\n routeType: null,\n };\n }\n default: {\n return {\n routeType: null,\n };\n }\n }\n};\n\nexport interface GetRouteType {\n resourceId?: string;\n routeType: RouteType | null;\n}\n\nexport default getRouteType;\n","import createHttpError from \"http-errors\";\n\nimport type { Adapter } from \"../types.d\";\n\nconst adapterMethods = [\"create\", \"delete\", \"getAll\", \"getOne\", \"parseQuery\", \"update\", \"getPaginationData\", \"getModels\"];\n\nconst validateAdapterMethods = <T, Q>(adapter: Adapter<T, Q>): void => {\n adapterMethods.forEach((method) => {\n if (!adapter[method as keyof Adapter<T, Q>]) {\n throw createHttpError(500, `Adapter must implement the \"${method}\" method.`);\n }\n });\n};\n\nexport default validateAdapterMethods;\n","import type { NextApiRequest, NextApiResponse } from \"next\";\n\nimport baseHandler from \"../../../base-crud-handler\";\nimport type { Adapter, ExecuteHandler, HandlerOptions, ParsedQueryParameters } from \"../../../types.d\";\n\nconst handler = async <\n T,\n Q extends ParsedQueryParameters = any,\n R extends NextApiRequest = NextApiRequest,\n Response extends NextApiResponse = NextApiResponse,\n M extends string = string,\n>(\n adapter: Adapter<T, Q>,\n options?: HandlerOptions<M>,\n): Promise<ExecuteHandler<R, Response>> =>\n await baseHandler<R, Response, T, Q, M>(\n async (response, responseConfig) => {\n response.status(responseConfig.status).send(responseConfig.data);\n },\n async (response) => {\n response.end();\n },\n adapter,\n options,\n );\n\nexport default handler;\n"]}
1
+ {"version":3,"sources":["../../../../node_modules/.pnpm/next@13.4.15_@babel+core@7.23.7_react-dom@18.2.0_react@18.2.0/node_modules/next/src/server/web/spec-extension/adapters/reflect.ts","../../../../node_modules/.pnpm/next@13.4.15_@babel+core@7.23.7_react-dom@18.2.0_react@18.2.0/node_modules/next/src/server/web/spec-extension/adapters/headers.ts","../../../../node_modules/.pnpm/next@13.4.15_@babel+core@7.23.7_react-dom@18.2.0_react@18.2.0/node_modules/next/src/lib/constants.ts","../../../../node_modules/.pnpm/next@13.4.15_@babel+core@7.23.7_react-dom@18.2.0_react@18.2.0/node_modules/next/dist/compiled/cookie/index.js","../../../../node_modules/.pnpm/next@13.4.15_@babel+core@7.23.7_react-dom@18.2.0_react@18.2.0/node_modules/next/src/server/api-utils/index.ts","../../src/next/index.ts","../../src/next/api/edge/index.ts","../../src/base-crud-handler.ts","../../src/handler/create.ts","../../src/handler/delete.ts","../../src/handler/list.ts","../../src/handler/read.ts","../../src/handler/update.ts","../../src/query-parser.ts","../../src/utils/format-resource-id.ts","../../src/utils/get-resource-name-from-url.ts","../../src/utils/get-route-type.ts","../../src/utils/validate-adapter-methods.ts","../../src/next/api/node/index.ts"],"names":["ReflectAdapter","get","target","prop","receiver","value","Reflect","bind","set","has","deleteProperty","ReadonlyHeadersError","HeadersAdapter","Error","constructor","callable","Headers","headers","Proxy","lowercased","toLowerCase","original","Object","keys","find","o","seal","merge","Array","isArray","join","from","append","name","existing","push","delete","forEach","callbackfn","thisArg","entries","call","key","values","Symbol","iterator","NEXT_QUERY_PARAM_PREFIX","PRERENDER_REVALIDATE_HEADER","PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER","CACHE_ONE_YEAR","MIDDLEWARE_FILENAME","MIDDLEWARE_LOCATION_REGEXP","INSTRUMENTATION_HOOK_FILENAME","INSTRUMENTATION_HOOKS_LOCATION_REGEXP","PAGES_DIR_ALIAS","DOT_NEXT_ALIAS","ROOT_DIR_ALIAS","APP_DIR_ALIAS","RSC_MOD_REF_PROXY_ALIAS","RSC_ACTION_VALIDATE_ALIAS","RSC_ACTION_PROXY_ALIAS","RSC_ACTION_CLIENT_WRAPPER_ALIAS","PUBLIC_DIR_MIDDLEWARE_CONFLICT","SSG_GET_INITIAL_PROPS_CONFLICT","SERVER_PROPS_GET_INIT_PROPS_CONFLICT","SERVER_PROPS_SSG_CONFLICT","STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR","SERVER_PROPS_EXPORT_ERROR","GSP_NO_RETURNED_VALUE","GSSP_NO_RETURNED_VALUE","UNSTABLE_REVALIDATE_RENAME_ERROR","GSSP_COMPONENT_MEMBER_ERROR","NON_STANDARD_NODE_ENV","SSG_FALLBACK_EXPORT_ERROR","ESLINT_DEFAULT_DIRS","ESLINT_DEFAULT_DIRS_WITH_APP","ESLINT_PROMPT_VALUES","SERVER_RUNTIME","WEBPACK_LAYERS","WEBPACK_RESOURCE_QUERIES","title","recommended","config","extends","edge","experimentalEdge","nodejs","WEBPACK_LAYERS_NAMES","shared","reactServerComponents","serverSideRendering","actionBrowser","api","middleware","edgeAsset","appPagesBrowser","appMetadataRoute","GROUP","server","edgeSSREntry","metadata","metadataRoute","metadataImageMeta","require_cookie","__commonJSMin","exports","module","init_cjs_shims","e","r","parse","serialize","i","t","a","n","s","p","f","u","v","c","tryDecode","getCookieParser","sendStatusCode","redirect","checkIsOnDemandRevalidate","COOKIE_NAME_PRERENDER_BYPASS","COOKIE_NAME_PRERENDER_DATA","RESPONSE_LIMIT_DEFAULT","SYMBOL_PREVIEW_DATA","SYMBOL_CLEARED_COOKIES","clearPreviewData","ApiError","sendError","setLazyProp","cookie","parseCookieFn","require","res","statusCode","statusOrUrl","url","writeHead","Location","write","end","req","previewProps","isOnDemandRevalidate","previewModeId","revalidateOnlyGenerated","options","previous","getHeader","setHeader","expires","Date","httpOnly","sameSite","secure","process","path","undefined","defineProperty","enumerable","message","statusMessage","getter","opts","configurable","optsReset","writable","import_api_utils","createHttpError","createHandler","adapter","query","request","resourceName","create_default","deleteHandler","resourceId","delete_default","paginate","listHandler","pagination","isPaginated","paginationOptions","resources","page","total","list_default","readHandler","resource","read_default","updateHandler","update_default","URL","parseRecursive","select","selectFields","field","parseWhere","where","whereObject","parsed","parseOrderBy","orderBy","orderByObject","parseQuery","searchParams","parsedQuery","query_parser_default","formatResourceId","format_resource_id_default","ensureCamelCase","string_","getResourceNameFromUrl","models","realPath","modelName","routeName","camelCaseModel","match","getRouteType","method","entityMatcher","simpleMatcher","pathMatch","get_route_type_default","adapterMethods","validateAdapterMethods","validate_adapter_methods_default","baseHandler","responseExecutor","finalExecutor","error_","error","routeNames","modelRoutes","responseOrContext","routeType","modelConfig","get_accessible_routes_default","resourceIdFormatted","parameters","responseConfig","base_crud_handler_default","handler","_","edge_default","response","node_default"],"mappings":"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","sourcesContent":[null,null,null,"(()=>{\"use strict\";if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var e={};(()=>{var r=e;\n/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */r.parse=parse;r.serialize=serialize;var i=decodeURIComponent;var t=encodeURIComponent;var a=/; */;var n=/^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;function parse(e,r){if(typeof e!==\"string\"){throw new TypeError(\"argument str must be a string\")}var t={};var n=r||{};var o=e.split(a);var s=n.decode||i;for(var p=0;p<o.length;p++){var f=o[p];var u=f.indexOf(\"=\");if(u<0){continue}var v=f.substr(0,u).trim();var c=f.substr(++u,f.length).trim();if('\"'==c[0]){c=c.slice(1,-1)}if(undefined==t[v]){t[v]=tryDecode(c,s)}}return t}function serialize(e,r,i){var a=i||{};var o=a.encode||t;if(typeof o!==\"function\"){throw new TypeError(\"option encode is invalid\")}if(!n.test(e)){throw new TypeError(\"argument name is invalid\")}var s=o(r);if(s&&!n.test(s)){throw new TypeError(\"argument val is invalid\")}var p=e+\"=\"+s;if(null!=a.maxAge){var f=a.maxAge-0;if(isNaN(f)||!isFinite(f)){throw new TypeError(\"option maxAge is invalid\")}p+=\"; Max-Age=\"+Math.floor(f)}if(a.domain){if(!n.test(a.domain)){throw new TypeError(\"option domain is invalid\")}p+=\"; Domain=\"+a.domain}if(a.path){if(!n.test(a.path)){throw new TypeError(\"option path is invalid\")}p+=\"; Path=\"+a.path}if(a.expires){if(typeof a.expires.toUTCString!==\"function\"){throw new TypeError(\"option expires is invalid\")}p+=\"; Expires=\"+a.expires.toUTCString()}if(a.httpOnly){p+=\"; HttpOnly\"}if(a.secure){p+=\"; Secure\"}if(a.sameSite){var u=typeof a.sameSite===\"string\"?a.sameSite.toLowerCase():a.sameSite;switch(u){case true:p+=\"; SameSite=Strict\";break;case\"lax\":p+=\"; SameSite=Lax\";break;case\"strict\":p+=\"; SameSite=Strict\";break;case\"none\":p+=\"; SameSite=None\";break;default:throw new TypeError(\"option sameSite is invalid\")}}return p}function tryDecode(e,r){try{return r(e)}catch(r){return e}}})();module.exports=e})();",null,"export { default as edgeHandler } from \"./api/edge\";\nexport { default as nodeHandler } from \"./api/node\";\n","import baseHandler from \"../../../base-crud-handler\";\nimport type { Adapter, ExecuteHandler, HandlerOptions, ParsedQueryParameters } from \"../../../types.d\";\n\nconst handler = async <T, R extends Request, Context, Q extends ParsedQueryParameters = any, M extends string = string>(\n adapter: Adapter<T, Q>,\n options?: HandlerOptions<M>,\n): Promise<ExecuteHandler<R, Context>> =>\n await baseHandler<R, Context, T, Q, M>(\n async (_, responseConfig) =>\n new Response(JSON.stringify(responseConfig.data), {\n headers: {\n \"content-type\": \"application/json; charset=utf-8\",\n },\n status: responseConfig.status,\n }),\n async () => {},\n adapter,\n options,\n );\n\nexport default handler;\n","import type { IncomingMessage, ServerResponse } from \"node:http\";\n\nimport type { HttpError } from \"http-errors\";\nimport createHttpError from \"http-errors\";\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { ApiError } from \"next/dist/server/api-utils\";\n\nimport createHandler from \"./handler/create\";\nimport deleteHandler from \"./handler/delete\";\nimport listHandler from \"./handler/list\";\nimport readHandler from \"./handler/read\";\nimport updateHandler from \"./handler/update\";\nimport parseQuery from \"./query-parser\";\nimport type { Adapter, ExecuteHandler, HandlerOptions, HandlerParameters, ParsedQueryParameters } from \"./types.d\";\nimport { RouteType } from \"./types.d\";\nimport formatResourceId from \"./utils/format-resource-id\";\nimport getAccessibleRoutes from \"./utils/get-accessible-routes\";\nimport { getResourceNameFromUrl } from \"./utils/get-resource-name-from-url\";\nimport getRouteType from \"./utils/get-route-type\";\nimport validateAdapterMethods from \"./utils/validate-adapter-methods\";\n\ninterface ResponseConfig {\n data: any;\n status: number;\n}\n\nasync function baseHandler<R extends Request, Context, T, Q extends ParsedQueryParameters = any, M extends string = string>(\n responseExecutor: (responseOrContext: Context, responseConfig: ResponseConfig) => Promise<Response>,\n finalExecutor: (responseOrContext: Context) => Promise<void>,\n adapter: Adapter<T, Q>,\n options?: HandlerOptions<M>,\n): Promise<ExecuteHandler<R, Context>>;\n\nasync function baseHandler<R extends IncomingMessage, RResponse extends ServerResponse, T, Q extends ParsedQueryParameters = any, M extends string = string>(\n responseExecutor: (responseOrContext: RResponse, responseConfig: ResponseConfig) => Promise<void>,\n finalExecutor: (responseOrContext: RResponse) => Promise<void>,\n adapter: Adapter<T, Q>,\n options?: HandlerOptions<M>,\n): Promise<ExecuteHandler<R, RResponse>>;\n\n// eslint-disable-next-line sonarjs/cognitive-complexity,func-style\nasync function baseHandler<\n R extends { headers: { host?: string }; method: string; url: string },\n RResponse,\n T,\n Q extends ParsedQueryParameters = any,\n M extends string = string,\n>(\n responseExecutor: (responseOrContext: RResponse, responseConfig: ResponseConfig) => Promise<RResponse>,\n finalExecutor: (responseOrContext: RResponse) => Promise<void>,\n adapter: Adapter<T, Q>,\n options?: HandlerOptions<M>,\n): Promise<ExecuteHandler<R, RResponse>> {\n try {\n validateAdapterMethods(adapter);\n } catch (error_: any) {\n const error = error_ as HttpError;\n\n throw new ApiError(error.statusCode, error.message);\n }\n\n await adapter.init?.();\n\n const config = {\n formatResourceId,\n pagination: {\n perPage: 20,\n },\n ...options,\n };\n\n const routeNames = await adapter.mapModelsToRouteNames?.();\n const modelRoutes: { [key in M]?: string } = {};\n\n adapter.getModels().forEach((modelName) => {\n modelRoutes[modelName as M] = config.models?.[modelName as M]?.name ?? routeNames?.[modelName] ?? modelName;\n });\n\n return async (request, responseOrContext) => {\n const { modelName, resourceName } = getResourceNameFromUrl(request.url, modelRoutes as { [key in M]: string });\n\n if (!resourceName) {\n if (process.env.NODE_ENV === \"development\") {\n const mappedModels = await adapter.mapModelsToRouteNames?.();\n\n if (typeof mappedModels === \"object\") {\n throw createHttpError(404, `Resource not found, possible models: ${Object.values(mappedModels).join(\", \")}`);\n }\n }\n\n throw createHttpError(404, `Resource not found: ${request.url}`);\n }\n\n const { resourceId, routeType } = getRouteType(request.method, request.url, resourceName);\n\n if (routeType === null) {\n throw createHttpError(404, `Route not found: ${request.url}`);\n }\n\n const modelConfig = options?.models?.[modelName as M];\n\n const accessibleRoutes = getAccessibleRoutes(modelConfig?.only, modelConfig?.exclude, options?.exposeStrategy ?? \"all\");\n\n if (!accessibleRoutes.includes(routeType)) {\n throw createHttpError(404, `Route not found: ${request.url}`);\n }\n\n try {\n const resourceIdFormatted = modelConfig?.formatResourceId?.(resourceId as string) ?? config.formatResourceId(resourceId as string);\n\n await adapter.connect?.();\n\n const parsedQuery = parseQuery(`https://${request.headers.host?.replace(/\\/$/u, \"\")}/${request.url}`);\n const parameters: HandlerParameters<T, Q> = {\n adapter,\n query: adapter.parseQuery(modelName as M, parsedQuery),\n resourceName: modelName,\n };\n\n try {\n let responseConfig: ResponseConfig;\n\n switch (routeType) {\n case RouteType.READ_ONE: {\n responseConfig = await (config.handlers?.get ?? readHandler)<T, Q>({\n ...parameters,\n resourceId: resourceIdFormatted,\n });\n break;\n }\n case RouteType.READ_ALL: {\n responseConfig = await (config.handlers?.list ?? listHandler)<T, Q>({\n ...parameters,\n pagination: config.pagination,\n query: {\n ...parameters.query,\n limit: parsedQuery.limit ? Number(parsedQuery.limit) : undefined,\n page: parsedQuery.page ? Number(parsedQuery.page) : undefined,\n },\n });\n break;\n }\n case RouteType.CREATE: {\n responseConfig = await (config.handlers?.create ?? createHandler)<T, Q, R>({\n ...parameters,\n request: request as R & { body: Record<string, any> },\n });\n break;\n }\n case RouteType.UPDATE: {\n responseConfig = await (config.handlers?.update ?? updateHandler)<T, Q, R>({\n ...parameters,\n request: request as R & { body: Partial<T> },\n resourceId: resourceIdFormatted,\n });\n break;\n }\n case RouteType.DELETE: {\n responseConfig = await (config.handlers?.delete ?? deleteHandler)<T, Q>({\n ...parameters,\n resourceId: resourceIdFormatted,\n });\n break;\n }\n default: {\n responseConfig = {\n data: \"Method not found\",\n status: 404,\n };\n }\n }\n\n await responseExecutor(responseOrContext, responseConfig);\n } catch (error: any) {\n if (adapter.handleError && !(error instanceof ApiError)) {\n adapter.handleError(error);\n } else {\n throw error;\n }\n }\n } finally {\n await adapter.disconnect?.();\n\n await finalExecutor(responseOrContext);\n }\n };\n}\n\nexport default baseHandler;\n","import type { HandlerParameters } from \"../types.d\";\n\nconst createHandler: Handler = async ({ adapter, query, request, resourceName }) => {\n const resources = await adapter.create(resourceName, request.body, query);\n\n return {\n data: resources,\n status: 201,\n };\n};\n\nexport type Handler = <T, Q, Request>(\n parameters: HandlerParameters<T, Q> & { request: Request & { body: Record<string, any> } },\n) => Promise<{\n data: any;\n status: number;\n}>;\n\nexport default createHandler;\n","import createHttpError from \"http-errors\";\n\nimport type { UniqueResourceHandlerParameters } from \"../types.d\";\n\nconst deleteHandler: Handler = async ({ adapter, query, resourceId, resourceName }) => {\n const resource = await adapter.getOne(resourceName, resourceId, query);\n\n if (typeof resource === \"object\") {\n const deletedResource = await adapter.delete(resourceName, resourceId, query);\n\n return {\n data: deletedResource,\n status: 200,\n };\n }\n\n throw createHttpError(404, `${resourceName} ${resourceId} not found`);\n};\n\nexport type Handler = <T, Q>(\n parameters: UniqueResourceHandlerParameters<T, Q>,\n) => Promise<{\n data: any;\n status: number;\n}>;\nexport default deleteHandler;\n","import { paginate } from \"@visulima/pagination\";\n\nimport type { HandlerParameters, PaginationConfig, ParsedQueryParameters } from \"../types.d\";\n\ninterface PaginationOptions {\n page: number;\n perPage: number;\n}\n\nconst listHandler: Handler = async ({ adapter, pagination, query, resourceName }) => {\n let isPaginated = false;\n let paginationOptions: PaginationOptions | undefined;\n\n if (query.page !== undefined) {\n if (query.page <= 0) {\n throw new Error(\"page query must be a strictly positive number\");\n }\n\n paginationOptions = {\n page: query.page,\n perPage: query.limit ?? pagination.perPage,\n };\n }\n\n if (paginationOptions) {\n isPaginated = true;\n\n // eslint-disable-next-line no-param-reassign\n query.skip = (paginationOptions.page - 1) * paginationOptions.perPage;\n // eslint-disable-next-line no-param-reassign\n query.limit = paginationOptions.perPage;\n }\n\n const resources = await adapter.getAll(resourceName, query);\n\n if (isPaginated) {\n const { page, total } = await adapter.getPaginationData(resourceName, query);\n\n const paginator = paginate(page, (paginationOptions as PaginationOptions).perPage, total, resources);\n\n return {\n data: paginator.toJSON(),\n status: 200,\n };\n }\n\n return {\n data: resources,\n status: 200,\n };\n};\n\nexport type Handler = <T, Q extends ParsedQueryParameters>(\n parameters: HandlerParameters<T, Q> & { pagination: PaginationConfig },\n) => Promise<{\n data: any;\n status: number;\n}>;\n\nexport default listHandler;\n","import createHttpError from \"http-errors\";\n\nimport type { UniqueResourceHandlerParameters } from \"../types.d\";\n\nconst readHandler: Handler = async ({ adapter, query, resourceId, resourceName }) => {\n const resource = await adapter.getOne(resourceName, resourceId, query);\n\n if (typeof resource !== \"object\") {\n throw createHttpError(404, `${resourceName} ${resourceId} not found`);\n }\n\n return {\n data: resource,\n status: 200,\n };\n};\n\nexport type Handler = <T, Q>(\n parameters: UniqueResourceHandlerParameters<T, Q>,\n) => Promise<{\n data: any;\n status: number;\n}>;\n\nexport default readHandler;\n","import createHttpError from \"http-errors\";\n\nimport type { UniqueResourceHandlerParameters } from \"../types.d\";\n\nconst updateHandler: Handler = async ({ adapter, query, request, resourceId, resourceName }) => {\n const resource = await adapter.getOne(resourceName, resourceId, query);\n\n if (typeof resource === \"object\") {\n const updatedResource = await adapter.update(resourceName, resourceId, request.body, query);\n\n return {\n data: updatedResource,\n status: 201,\n };\n }\n\n throw createHttpError(404, `${resourceName} ${resourceId} not found`);\n};\n\nexport type Handler = <T, Q, Request>(\n parameters: UniqueResourceHandlerParameters<T, Q> & { request: Request & { body: Partial<T> } },\n) => Promise<{\n data: any;\n status: number;\n}>;\n\nexport default updateHandler;\n","import { URL } from \"node:url\";\n\n// eslint-disable-next-line no-restricted-imports\nimport set from \"lodash.set\";\n\nimport type { OrderByField, ParsedQueryParameters, RecursiveField, WhereField } from \"./types.d\";\n\nconst parseRecursive = (select: string): RecursiveField => {\n const selectFields: RecursiveField = {};\n\n const fields = select.split(\",\");\n\n fields.forEach((field) => {\n set(selectFields, field, true);\n });\n\n return selectFields;\n};\n\nconst parseWhere = (where: string): WhereField => {\n const whereObject = JSON.parse(where);\n const parsed: WhereField = {};\n\n Object.keys(whereObject).forEach((key) => {\n set(parsed, key, whereObject[key]);\n });\n\n return parsed;\n};\n\nconst parseOrderBy = (orderBy: string): OrderByField => {\n const parsed: OrderByField = {};\n const orderByObject = JSON.parse(orderBy);\n\n if (Object.keys(orderByObject).length > 0) {\n const key = Object.keys(orderByObject)[0] as string;\n\n if (orderByObject[key as keyof typeof orderByObject] === \"$asc\" || orderByObject[key as keyof typeof orderByObject] === \"$desc\") {\n parsed[key] = orderByObject[key as keyof typeof orderByObject];\n }\n }\n\n if (Object.keys(parsed).length !== 1) {\n throw new Error(\"orderBy needs to be an object with exactly 1 property with either $asc or $desc value\");\n }\n\n return parsed;\n};\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst parseQuery = (url?: string): ParsedQueryParameters => {\n if (url) {\n const { searchParams } = new URL(url);\n const parsedQuery: ParsedQueryParameters = {};\n\n if (searchParams.get(\"select\")) {\n parsedQuery.select = parseRecursive(searchParams.get(\"select\") as string);\n }\n\n if (searchParams.get(\"include\")) {\n parsedQuery.include = parseRecursive(searchParams.get(\"include\") as string);\n }\n\n if (searchParams.get(\"where\")) {\n parsedQuery.where = parseWhere(searchParams.get(\"where\") as string);\n }\n\n if (searchParams.get(\"orderBy\")) {\n parsedQuery.orderBy = parseOrderBy(searchParams.get(\"orderBy\") as string);\n }\n\n if (searchParams.has(\"limit\")) {\n parsedQuery.limit = Number.isFinite(+(searchParams.get(\"limit\") as string)) ? +(searchParams.get(\"limit\") as string) : undefined;\n }\n\n if (searchParams.has(\"skip\")) {\n parsedQuery.skip = Number.isFinite(+(searchParams.get(\"skip\") as string)) ? +(searchParams.get(\"skip\") as string) : undefined;\n }\n\n if (searchParams.get(\"distinct\")) {\n parsedQuery.distinct = searchParams.get(\"distinct\") as string;\n }\n\n if (searchParams.get(\"page\")) {\n parsedQuery.page = Number.isFinite(+(searchParams.get(\"page\") as string)) ? +(searchParams.get(\"page\") as string) : undefined;\n }\n\n return {\n originalQuery: Object.fromEntries(searchParams.entries()),\n ...parsedQuery,\n };\n }\n\n return {};\n};\n\nexport default parseQuery;\n","const formatResourceId = (resourceId: string): number | string => (Number.isSafeInteger(+resourceId) ? +resourceId : resourceId);\n\nexport default formatResourceId;\n","export const ensureCamelCase = (string_: string): string => `${string_.charAt(0).toLowerCase()}${string_.slice(1)}`;\n\nexport const getResourceNameFromUrl = <M extends string = string>(\n url: string,\n models: { [key in M]: string },\n): {\n modelName: string;\n resourceName: string;\n} => {\n // Exclude the query params from the path\n const realPath = url.split(\"?\")[0];\n\n if (realPath === undefined) {\n throw new TypeError(\"Path is undefined\");\n }\n\n const modelName = (Object.keys(models) as M[]).find((name) => {\n const routeName = models[name];\n const camelCaseModel = ensureCamelCase(routeName);\n\n // eslint-disable-next-line @rushstack/security/no-unsafe-regexp,security/detect-non-literal-regexp\n return new RegExp(`(${routeName}|${camelCaseModel}$)|(${routeName}|${camelCaseModel}/)`, \"g\").test(realPath);\n });\n\n if (modelName === undefined) {\n throw new Error(`Couldn't find model ${modelName} name for url ${url}`);\n }\n\n return {\n modelName,\n resourceName: models[modelName],\n };\n};\n","import { match } from \"path-to-regexp\";\n\nimport { RouteType } from \"../types.d\";\n\ninterface PathMatch {\n id: string;\n}\n\nconst getRouteType: (method: string, url: string, resourceName: string) => GetRouteType = (method, url, resourceName) => {\n // Exclude the query params from the path\n const realPath = url.split(\"?\")[0];\n\n if (realPath === undefined) {\n throw new TypeError(\"Path is undefined\");\n }\n\n if (!realPath.includes(`/${resourceName}`)) {\n throw new Error(`invalid resource name '${resourceName}' for route '${realPath}'`);\n }\n\n const entityMatcher = match<PathMatch>([`/(.*)/${resourceName}`, `/(.*)/${resourceName}/:id`], { decode: decodeURIComponent });\n const simpleMatcher = match(`/(.*)/${resourceName}`, {\n decode: decodeURIComponent,\n });\n\n switch (method) {\n case \"GET\": {\n const pathMatch = entityMatcher(realPath);\n\n // If we got a /something after the resource name, we are reading 1 entity\n if (typeof pathMatch === \"object\" && pathMatch.params.id) {\n return {\n resourceId: pathMatch.params.id,\n routeType: RouteType.READ_ONE,\n };\n }\n\n return {\n routeType: RouteType.READ_ALL,\n };\n }\n case \"POST\": {\n const pathMatch = simpleMatcher(realPath);\n\n if (pathMatch) {\n return {\n routeType: RouteType.CREATE,\n };\n }\n\n return {\n routeType: null,\n };\n }\n case \"PUT\":\n case \"PATCH\": {\n const pathMatch = entityMatcher(realPath);\n\n if (typeof pathMatch === \"object\" && pathMatch.params.id) {\n return {\n resourceId: pathMatch.params.id,\n routeType: RouteType.UPDATE,\n };\n }\n\n return {\n routeType: null,\n };\n }\n case \"DELETE\": {\n const pathMatch = entityMatcher(realPath);\n\n if (typeof pathMatch === \"object\" && pathMatch.params.id) {\n return {\n resourceId: pathMatch.params.id,\n routeType: RouteType.DELETE,\n };\n }\n\n return {\n routeType: null,\n };\n }\n default: {\n return {\n routeType: null,\n };\n }\n }\n};\n\nexport interface GetRouteType {\n resourceId?: string;\n routeType: RouteType | null;\n}\n\nexport default getRouteType;\n","import createHttpError from \"http-errors\";\n\nimport type { Adapter } from \"../types.d\";\n\nconst adapterMethods = [\"create\", \"delete\", \"getAll\", \"getOne\", \"parseQuery\", \"update\", \"getPaginationData\", \"getModels\"];\n\nconst validateAdapterMethods = <T, Q>(adapter: Adapter<T, Q>): void => {\n adapterMethods.forEach((method) => {\n if (!adapter[method as keyof Adapter<T, Q>]) {\n throw createHttpError(500, `Adapter must implement the \"${method}\" method.`);\n }\n });\n};\n\nexport default validateAdapterMethods;\n","import type { NextApiRequest, NextApiResponse } from \"next\";\n\nimport baseHandler from \"../../../base-crud-handler\";\nimport type { Adapter, ExecuteHandler, HandlerOptions, ParsedQueryParameters } from \"../../../types.d\";\n\nconst handler = async <\n T,\n Q extends ParsedQueryParameters = any,\n R extends NextApiRequest = NextApiRequest,\n Response extends NextApiResponse = NextApiResponse,\n M extends string = string,\n>(\n adapter: Adapter<T, Q>,\n options?: HandlerOptions<M>,\n): Promise<ExecuteHandler<R, Response>> =>\n await baseHandler<R, Response, T, Q, M>(\n async (response, responseConfig) => {\n response.status(responseConfig.status).send(responseConfig.data);\n },\n async (response) => {\n response.end();\n },\n adapter,\n options,\n );\n\nexport default handler;\n"]}
@@ -1,4 +1,4 @@
1
- import { a, d, c, b as b$1, f } from '../chunk-SAH4YW7W.mjs';
1
+ import { a, d, c, b as b$1, f } from '../chunk-BYPXSHQH.mjs';
2
2
  import j from 'http-errors';
3
3
  import { paginate } from '@visulima/pagination';
4
4
  import { URL } from 'url';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../node_modules/.pnpm/next@13.4.15_@babel+core@7.23.5_react-dom@18.2.0_react@18.2.0/node_modules/next/src/server/web/spec-extension/adapters/reflect.ts","../../../../node_modules/.pnpm/next@13.4.15_@babel+core@7.23.5_react-dom@18.2.0_react@18.2.0/node_modules/next/src/server/web/spec-extension/adapters/headers.ts","../../../../node_modules/.pnpm/next@13.4.15_@babel+core@7.23.5_react-dom@18.2.0_react@18.2.0/node_modules/next/src/lib/constants.ts","../../../../node_modules/.pnpm/next@13.4.15_@babel+core@7.23.5_react-dom@18.2.0_react@18.2.0/node_modules/next/dist/compiled/cookie/index.js","../../../../node_modules/.pnpm/next@13.4.15_@babel+core@7.23.5_react-dom@18.2.0_react@18.2.0/node_modules/next/src/server/api-utils/index.ts","../../src/next/index.ts","../../src/next/api/edge/index.ts","../../src/base-crud-handler.ts","../../src/handler/create.ts","../../src/handler/delete.ts","../../src/handler/list.ts","../../src/handler/read.ts","../../src/handler/update.ts","../../src/query-parser.ts","../../src/utils/format-resource-id.ts","../../src/utils/get-resource-name-from-url.ts","../../src/utils/get-route-type.ts","../../src/utils/validate-adapter-methods.ts","../../src/next/api/node/index.ts"],"names":["ReflectAdapter","get","target","prop","receiver","value","Reflect","bind","set","has","deleteProperty","ReadonlyHeadersError","HeadersAdapter","Error","constructor","callable","Headers","headers","Proxy","lowercased","toLowerCase","original","Object","keys","find","o","seal","merge","Array","isArray","join","from","append","name","existing","push","delete","forEach","callbackfn","thisArg","entries","call","key","values","Symbol","iterator","NEXT_QUERY_PARAM_PREFIX","PRERENDER_REVALIDATE_HEADER","PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER","CACHE_ONE_YEAR","MIDDLEWARE_FILENAME","MIDDLEWARE_LOCATION_REGEXP","INSTRUMENTATION_HOOK_FILENAME","INSTRUMENTATION_HOOKS_LOCATION_REGEXP","PAGES_DIR_ALIAS","DOT_NEXT_ALIAS","ROOT_DIR_ALIAS","APP_DIR_ALIAS","RSC_MOD_REF_PROXY_ALIAS","RSC_ACTION_VALIDATE_ALIAS","RSC_ACTION_PROXY_ALIAS","RSC_ACTION_CLIENT_WRAPPER_ALIAS","PUBLIC_DIR_MIDDLEWARE_CONFLICT","SSG_GET_INITIAL_PROPS_CONFLICT","SERVER_PROPS_GET_INIT_PROPS_CONFLICT","SERVER_PROPS_SSG_CONFLICT","STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR","SERVER_PROPS_EXPORT_ERROR","GSP_NO_RETURNED_VALUE","GSSP_NO_RETURNED_VALUE","UNSTABLE_REVALIDATE_RENAME_ERROR","GSSP_COMPONENT_MEMBER_ERROR","NON_STANDARD_NODE_ENV","SSG_FALLBACK_EXPORT_ERROR","ESLINT_DEFAULT_DIRS","ESLINT_DEFAULT_DIRS_WITH_APP","ESLINT_PROMPT_VALUES","SERVER_RUNTIME","WEBPACK_LAYERS","WEBPACK_RESOURCE_QUERIES","title","recommended","config","extends","edge","experimentalEdge","nodejs","WEBPACK_LAYERS_NAMES","shared","reactServerComponents","serverSideRendering","actionBrowser","api","middleware","edgeAsset","appPagesBrowser","appMetadataRoute","GROUP","server","edgeSSREntry","metadata","metadataRoute","metadataImageMeta","require_cookie","__commonJSMin","exports","module","init_esm_shims","__dirname","e","r","parse","serialize","i","t","a","n","s","p","f","u","v","c","tryDecode","getCookieParser","sendStatusCode","redirect","checkIsOnDemandRevalidate","COOKIE_NAME_PRERENDER_BYPASS","COOKIE_NAME_PRERENDER_DATA","RESPONSE_LIMIT_DEFAULT","SYMBOL_PREVIEW_DATA","SYMBOL_CLEARED_COOKIES","clearPreviewData","ApiError","sendError","setLazyProp","cookie","parseCookieFn","require","res","statusCode","statusOrUrl","url","writeHead","Location","write","end","req","previewProps","isOnDemandRevalidate","previewModeId","revalidateOnlyGenerated","options","previous","getHeader","setHeader","expires","Date","httpOnly","sameSite","secure","process","path","undefined","defineProperty","enumerable","message","statusMessage","getter","opts","configurable","optsReset","writable","import_api_utils","createHttpError","createHandler","adapter","query","request","resourceName","create_default","deleteHandler","resourceId","delete_default","paginate","listHandler","pagination","isPaginated","paginationOptions","resources","page","total","list_default","readHandler","resource","read_default","updateHandler","update_default","URL","parseRecursive","select","selectFields","field","parseWhere","where","whereObject","parsed","parseOrderBy","orderBy","orderByObject","parseQuery","searchParams","parsedQuery","query_parser_default","formatResourceId","format_resource_id_default","ensureCamelCase","string_","getResourceNameFromUrl","models","realPath","modelName","routeName","camelCaseModel","match","getRouteType","method","entityMatcher","simpleMatcher","pathMatch","get_route_type_default","adapterMethods","validateAdapterMethods","validate_adapter_methods_default","baseHandler","responseExecutor","finalExecutor","error_","error","routeNames","modelRoutes","responseOrContext","routeType","modelConfig","get_accessible_routes_default","resourceIdFormatted","parameters","responseConfig","base_crud_handler_default","handler","_","edge_default","response","node_default"],"mappings":"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","sourcesContent":[null,null,null,"(()=>{\"use strict\";if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var e={};(()=>{var r=e;\n/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */r.parse=parse;r.serialize=serialize;var i=decodeURIComponent;var t=encodeURIComponent;var a=/; */;var n=/^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;function parse(e,r){if(typeof e!==\"string\"){throw new TypeError(\"argument str must be a string\")}var t={};var n=r||{};var o=e.split(a);var s=n.decode||i;for(var p=0;p<o.length;p++){var f=o[p];var u=f.indexOf(\"=\");if(u<0){continue}var v=f.substr(0,u).trim();var c=f.substr(++u,f.length).trim();if('\"'==c[0]){c=c.slice(1,-1)}if(undefined==t[v]){t[v]=tryDecode(c,s)}}return t}function serialize(e,r,i){var a=i||{};var o=a.encode||t;if(typeof o!==\"function\"){throw new TypeError(\"option encode is invalid\")}if(!n.test(e)){throw new TypeError(\"argument name is invalid\")}var s=o(r);if(s&&!n.test(s)){throw new TypeError(\"argument val is invalid\")}var p=e+\"=\"+s;if(null!=a.maxAge){var f=a.maxAge-0;if(isNaN(f)||!isFinite(f)){throw new TypeError(\"option maxAge is invalid\")}p+=\"; Max-Age=\"+Math.floor(f)}if(a.domain){if(!n.test(a.domain)){throw new TypeError(\"option domain is invalid\")}p+=\"; Domain=\"+a.domain}if(a.path){if(!n.test(a.path)){throw new TypeError(\"option path is invalid\")}p+=\"; Path=\"+a.path}if(a.expires){if(typeof a.expires.toUTCString!==\"function\"){throw new TypeError(\"option expires is invalid\")}p+=\"; Expires=\"+a.expires.toUTCString()}if(a.httpOnly){p+=\"; HttpOnly\"}if(a.secure){p+=\"; Secure\"}if(a.sameSite){var u=typeof a.sameSite===\"string\"?a.sameSite.toLowerCase():a.sameSite;switch(u){case true:p+=\"; SameSite=Strict\";break;case\"lax\":p+=\"; SameSite=Lax\";break;case\"strict\":p+=\"; SameSite=Strict\";break;case\"none\":p+=\"; SameSite=None\";break;default:throw new TypeError(\"option sameSite is invalid\")}}return p}function tryDecode(e,r){try{return r(e)}catch(r){return e}}})();module.exports=e})();",null,"export { default as edgeHandler } from \"./api/edge\";\nexport { default as nodeHandler } from \"./api/node\";\n","import baseHandler from \"../../../base-crud-handler\";\nimport type { Adapter, ExecuteHandler, HandlerOptions, ParsedQueryParameters } from \"../../../types.d\";\n\nconst handler = async <T, R extends Request, Context, Q extends ParsedQueryParameters = any, M extends string = string>(\n adapter: Adapter<T, Q>,\n options?: HandlerOptions<M>,\n): Promise<ExecuteHandler<R, Context>> =>\n await baseHandler<R, Context, T, Q, M>(\n async (_, responseConfig) =>\n new Response(JSON.stringify(responseConfig.data), {\n headers: {\n \"content-type\": \"application/json; charset=utf-8\",\n },\n status: responseConfig.status,\n }),\n async () => {},\n adapter,\n options,\n );\n\nexport default handler;\n","import type { IncomingMessage, ServerResponse } from \"node:http\";\n\nimport type { HttpError } from \"http-errors\";\nimport createHttpError from \"http-errors\";\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { ApiError } from \"next/dist/server/api-utils\";\n\nimport createHandler from \"./handler/create\";\nimport deleteHandler from \"./handler/delete\";\nimport listHandler from \"./handler/list\";\nimport readHandler from \"./handler/read\";\nimport updateHandler from \"./handler/update\";\nimport parseQuery from \"./query-parser\";\nimport type { Adapter, ExecuteHandler, HandlerOptions, HandlerParameters, ParsedQueryParameters } from \"./types.d\";\nimport { RouteType } from \"./types.d\";\nimport formatResourceId from \"./utils/format-resource-id\";\nimport getAccessibleRoutes from \"./utils/get-accessible-routes\";\nimport { getResourceNameFromUrl } from \"./utils/get-resource-name-from-url\";\nimport getRouteType from \"./utils/get-route-type\";\nimport validateAdapterMethods from \"./utils/validate-adapter-methods\";\n\ninterface ResponseConfig {\n data: any;\n status: number;\n}\n\nasync function baseHandler<R extends Request, Context, T, Q extends ParsedQueryParameters = any, M extends string = string>(\n responseExecutor: (responseOrContext: Context, responseConfig: ResponseConfig) => Promise<Response>,\n finalExecutor: (responseOrContext: Context) => Promise<void>,\n adapter: Adapter<T, Q>,\n options?: HandlerOptions<M>,\n): Promise<ExecuteHandler<R, Context>>;\n\nasync function baseHandler<R extends IncomingMessage, RResponse extends ServerResponse, T, Q extends ParsedQueryParameters = any, M extends string = string>(\n responseExecutor: (responseOrContext: RResponse, responseConfig: ResponseConfig) => Promise<void>,\n finalExecutor: (responseOrContext: RResponse) => Promise<void>,\n adapter: Adapter<T, Q>,\n options?: HandlerOptions<M>,\n): Promise<ExecuteHandler<R, RResponse>>;\n\n// eslint-disable-next-line sonarjs/cognitive-complexity,func-style\nasync function baseHandler<\n R extends { headers: { host?: string }; method: string; url: string },\n RResponse,\n T,\n Q extends ParsedQueryParameters = any,\n M extends string = string,\n>(\n responseExecutor: (responseOrContext: RResponse, responseConfig: ResponseConfig) => Promise<RResponse>,\n finalExecutor: (responseOrContext: RResponse) => Promise<void>,\n adapter: Adapter<T, Q>,\n options?: HandlerOptions<M>,\n): Promise<ExecuteHandler<R, RResponse>> {\n try {\n validateAdapterMethods(adapter);\n } catch (error_: any) {\n const error = error_ as HttpError;\n\n throw new ApiError(error.statusCode, error.message);\n }\n\n await adapter.init?.();\n\n const config = {\n formatResourceId,\n pagination: {\n perPage: 20,\n },\n ...options,\n };\n\n const routeNames = await adapter.mapModelsToRouteNames?.();\n const modelRoutes: { [key in M]?: string } = {};\n\n adapter.getModels().forEach((modelName) => {\n modelRoutes[modelName as M] = config.models?.[modelName as M]?.name ?? routeNames?.[modelName] ?? modelName;\n });\n\n return async (request, responseOrContext) => {\n const { modelName, resourceName } = getResourceNameFromUrl(request.url, modelRoutes as { [key in M]: string });\n\n if (!resourceName) {\n if (process.env.NODE_ENV === \"development\") {\n const mappedModels = await adapter.mapModelsToRouteNames?.();\n\n if (typeof mappedModels === \"object\") {\n throw createHttpError(404, `Resource not found, possible models: ${Object.values(mappedModels).join(\", \")}`);\n }\n }\n\n throw createHttpError(404, `Resource not found: ${request.url}`);\n }\n\n const { resourceId, routeType } = getRouteType(request.method, request.url, resourceName);\n\n if (routeType === null) {\n throw createHttpError(404, `Route not found: ${request.url}`);\n }\n\n const modelConfig = options?.models?.[modelName as M];\n\n const accessibleRoutes = getAccessibleRoutes(modelConfig?.only, modelConfig?.exclude, options?.exposeStrategy ?? \"all\");\n\n if (!accessibleRoutes.includes(routeType)) {\n throw createHttpError(404, `Route not found: ${request.url}`);\n }\n\n try {\n const resourceIdFormatted = modelConfig?.formatResourceId?.(resourceId as string) ?? config.formatResourceId(resourceId as string);\n\n await adapter.connect?.();\n\n const parsedQuery = parseQuery(`https://${request.headers.host?.replace(/\\/$/u, \"\")}/${request.url}`);\n const parameters: HandlerParameters<T, Q> = {\n adapter,\n query: adapter.parseQuery(modelName as M, parsedQuery),\n resourceName: modelName,\n };\n\n try {\n let responseConfig: ResponseConfig;\n\n switch (routeType) {\n case RouteType.READ_ONE: {\n responseConfig = await (config.handlers?.get ?? readHandler)<T, Q>({\n ...parameters,\n resourceId: resourceIdFormatted,\n });\n break;\n }\n case RouteType.READ_ALL: {\n responseConfig = await (config.handlers?.list ?? listHandler)<T, Q>({\n ...parameters,\n pagination: config.pagination,\n query: {\n ...parameters.query,\n limit: parsedQuery.limit ? Number(parsedQuery.limit) : undefined,\n page: parsedQuery.page ? Number(parsedQuery.page) : undefined,\n },\n });\n break;\n }\n case RouteType.CREATE: {\n responseConfig = await (config.handlers?.create ?? createHandler)<T, Q, R>({\n ...parameters,\n request: request as R & { body: Record<string, any> },\n });\n break;\n }\n case RouteType.UPDATE: {\n responseConfig = await (config.handlers?.update ?? updateHandler)<T, Q, R>({\n ...parameters,\n request: request as R & { body: Partial<T> },\n resourceId: resourceIdFormatted,\n });\n break;\n }\n case RouteType.DELETE: {\n responseConfig = await (config.handlers?.delete ?? deleteHandler)<T, Q>({\n ...parameters,\n resourceId: resourceIdFormatted,\n });\n break;\n }\n default: {\n responseConfig = {\n data: \"Method not found\",\n status: 404,\n };\n }\n }\n\n await responseExecutor(responseOrContext, responseConfig);\n } catch (error: any) {\n if (adapter.handleError && !(error instanceof ApiError)) {\n adapter.handleError(error);\n } else {\n throw error;\n }\n }\n } finally {\n await adapter.disconnect?.();\n\n await finalExecutor(responseOrContext);\n }\n };\n}\n\nexport default baseHandler;\n","import type { HandlerParameters } from \"../types.d\";\n\nconst createHandler: Handler = async ({ adapter, query, request, resourceName }) => {\n const resources = await adapter.create(resourceName, request.body, query);\n\n return {\n data: resources,\n status: 201,\n };\n};\n\nexport type Handler = <T, Q, Request>(\n parameters: HandlerParameters<T, Q> & { request: Request & { body: Record<string, any> } },\n) => Promise<{\n data: any;\n status: number;\n}>;\n\nexport default createHandler;\n","import createHttpError from \"http-errors\";\n\nimport type { UniqueResourceHandlerParameters } from \"../types.d\";\n\nconst deleteHandler: Handler = async ({ adapter, query, resourceId, resourceName }) => {\n const resource = await adapter.getOne(resourceName, resourceId, query);\n\n if (typeof resource === \"object\") {\n const deletedResource = await adapter.delete(resourceName, resourceId, query);\n\n return {\n data: deletedResource,\n status: 200,\n };\n }\n\n throw createHttpError(404, `${resourceName} ${resourceId} not found`);\n};\n\nexport type Handler = <T, Q>(\n parameters: UniqueResourceHandlerParameters<T, Q>,\n) => Promise<{\n data: any;\n status: number;\n}>;\nexport default deleteHandler;\n","import { paginate } from \"@visulima/pagination\";\n\nimport type { HandlerParameters, PaginationConfig, ParsedQueryParameters } from \"../types.d\";\n\ninterface PaginationOptions {\n page: number;\n perPage: number;\n}\n\nconst listHandler: Handler = async ({ adapter, pagination, query, resourceName }) => {\n let isPaginated = false;\n let paginationOptions: PaginationOptions | undefined;\n\n if (query.page !== undefined) {\n if (query.page <= 0) {\n throw new Error(\"page query must be a strictly positive number\");\n }\n\n paginationOptions = {\n page: query.page,\n perPage: query.limit ?? pagination.perPage,\n };\n }\n\n if (paginationOptions) {\n isPaginated = true;\n\n // eslint-disable-next-line no-param-reassign\n query.skip = (paginationOptions.page - 1) * paginationOptions.perPage;\n // eslint-disable-next-line no-param-reassign\n query.limit = paginationOptions.perPage;\n }\n\n const resources = await adapter.getAll(resourceName, query);\n\n if (isPaginated) {\n const { page, total } = await adapter.getPaginationData(resourceName, query);\n\n const paginator = paginate(page, (paginationOptions as PaginationOptions).perPage, total, resources);\n\n return {\n data: paginator.toJSON(),\n status: 200,\n };\n }\n\n return {\n data: resources,\n status: 200,\n };\n};\n\nexport type Handler = <T, Q extends ParsedQueryParameters>(\n parameters: HandlerParameters<T, Q> & { pagination: PaginationConfig },\n) => Promise<{\n data: any;\n status: number;\n}>;\n\nexport default listHandler;\n","import createHttpError from \"http-errors\";\n\nimport type { UniqueResourceHandlerParameters } from \"../types.d\";\n\nconst readHandler: Handler = async ({ adapter, query, resourceId, resourceName }) => {\n const resource = await adapter.getOne(resourceName, resourceId, query);\n\n if (typeof resource !== \"object\") {\n throw createHttpError(404, `${resourceName} ${resourceId} not found`);\n }\n\n return {\n data: resource,\n status: 200,\n };\n};\n\nexport type Handler = <T, Q>(\n parameters: UniqueResourceHandlerParameters<T, Q>,\n) => Promise<{\n data: any;\n status: number;\n}>;\n\nexport default readHandler;\n","import createHttpError from \"http-errors\";\n\nimport type { UniqueResourceHandlerParameters } from \"../types.d\";\n\nconst updateHandler: Handler = async ({ adapter, query, request, resourceId, resourceName }) => {\n const resource = await adapter.getOne(resourceName, resourceId, query);\n\n if (typeof resource === \"object\") {\n const updatedResource = await adapter.update(resourceName, resourceId, request.body, query);\n\n return {\n data: updatedResource,\n status: 201,\n };\n }\n\n throw createHttpError(404, `${resourceName} ${resourceId} not found`);\n};\n\nexport type Handler = <T, Q, Request>(\n parameters: UniqueResourceHandlerParameters<T, Q> & { request: Request & { body: Partial<T> } },\n) => Promise<{\n data: any;\n status: number;\n}>;\n\nexport default updateHandler;\n","import { URL } from \"node:url\";\n\n// eslint-disable-next-line no-restricted-imports\nimport set from \"lodash.set\";\n\nimport type { OrderByField, ParsedQueryParameters, RecursiveField, WhereField } from \"./types.d\";\n\nconst parseRecursive = (select: string): RecursiveField => {\n const selectFields: RecursiveField = {};\n\n const fields = select.split(\",\");\n\n fields.forEach((field) => {\n set(selectFields, field, true);\n });\n\n return selectFields;\n};\n\nconst parseWhere = (where: string): WhereField => {\n const whereObject = JSON.parse(where);\n const parsed: WhereField = {};\n\n Object.keys(whereObject).forEach((key) => {\n set(parsed, key, whereObject[key]);\n });\n\n return parsed;\n};\n\nconst parseOrderBy = (orderBy: string): OrderByField => {\n const parsed: OrderByField = {};\n const orderByObject = JSON.parse(orderBy);\n\n if (Object.keys(orderByObject).length > 0) {\n const key = Object.keys(orderByObject)[0] as string;\n\n if (orderByObject[key as keyof typeof orderByObject] === \"$asc\" || orderByObject[key as keyof typeof orderByObject] === \"$desc\") {\n parsed[key] = orderByObject[key as keyof typeof orderByObject];\n }\n }\n\n if (Object.keys(parsed).length !== 1) {\n throw new Error(\"orderBy needs to be an object with exactly 1 property with either $asc or $desc value\");\n }\n\n return parsed;\n};\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst parseQuery = (url?: string): ParsedQueryParameters => {\n if (url) {\n const { searchParams } = new URL(url);\n const parsedQuery: ParsedQueryParameters = {};\n\n if (searchParams.get(\"select\")) {\n parsedQuery.select = parseRecursive(searchParams.get(\"select\") as string);\n }\n\n if (searchParams.get(\"include\")) {\n parsedQuery.include = parseRecursive(searchParams.get(\"include\") as string);\n }\n\n if (searchParams.get(\"where\")) {\n parsedQuery.where = parseWhere(searchParams.get(\"where\") as string);\n }\n\n if (searchParams.get(\"orderBy\")) {\n parsedQuery.orderBy = parseOrderBy(searchParams.get(\"orderBy\") as string);\n }\n\n if (searchParams.has(\"limit\")) {\n parsedQuery.limit = Number.isFinite(+(searchParams.get(\"limit\") as string)) ? +(searchParams.get(\"limit\") as string) : undefined;\n }\n\n if (searchParams.has(\"skip\")) {\n parsedQuery.skip = Number.isFinite(+(searchParams.get(\"skip\") as string)) ? +(searchParams.get(\"skip\") as string) : undefined;\n }\n\n if (searchParams.get(\"distinct\")) {\n parsedQuery.distinct = searchParams.get(\"distinct\") as string;\n }\n\n if (searchParams.get(\"page\")) {\n parsedQuery.page = Number.isFinite(+(searchParams.get(\"page\") as string)) ? +(searchParams.get(\"page\") as string) : undefined;\n }\n\n return {\n originalQuery: Object.fromEntries(searchParams.entries()),\n ...parsedQuery,\n };\n }\n\n return {};\n};\n\nexport default parseQuery;\n","const formatResourceId = (resourceId: string): number | string => (Number.isSafeInteger(+resourceId) ? +resourceId : resourceId);\n\nexport default formatResourceId;\n","export const ensureCamelCase = (string_: string): string => `${string_.charAt(0).toLowerCase()}${string_.slice(1)}`;\n\nexport const getResourceNameFromUrl = <M extends string = string>(\n url: string,\n models: { [key in M]: string },\n): {\n modelName: string;\n resourceName: string;\n} => {\n // Exclude the query params from the path\n const realPath = url.split(\"?\")[0];\n\n if (realPath === undefined) {\n throw new TypeError(\"Path is undefined\");\n }\n\n const modelName = (Object.keys(models) as M[]).find((name) => {\n const routeName = models[name];\n const camelCaseModel = ensureCamelCase(routeName);\n\n // eslint-disable-next-line @rushstack/security/no-unsafe-regexp,security/detect-non-literal-regexp\n return new RegExp(`(${routeName}|${camelCaseModel}$)|(${routeName}|${camelCaseModel}/)`, \"g\").test(realPath);\n });\n\n if (modelName === undefined) {\n throw new Error(`Couldn't find model ${modelName} name for url ${url}`);\n }\n\n return {\n modelName,\n resourceName: models[modelName],\n };\n};\n","import { match } from \"path-to-regexp\";\n\nimport { RouteType } from \"../types.d\";\n\ninterface PathMatch {\n id: string;\n}\n\nconst getRouteType: (method: string, url: string, resourceName: string) => GetRouteType = (method, url, resourceName) => {\n // Exclude the query params from the path\n const realPath = url.split(\"?\")[0];\n\n if (realPath === undefined) {\n throw new TypeError(\"Path is undefined\");\n }\n\n if (!realPath.includes(`/${resourceName}`)) {\n throw new Error(`invalid resource name '${resourceName}' for route '${realPath}'`);\n }\n\n const entityMatcher = match<PathMatch>([`/(.*)/${resourceName}`, `/(.*)/${resourceName}/:id`], { decode: decodeURIComponent });\n const simpleMatcher = match(`/(.*)/${resourceName}`, {\n decode: decodeURIComponent,\n });\n\n switch (method) {\n case \"GET\": {\n const pathMatch = entityMatcher(realPath);\n\n // If we got a /something after the resource name, we are reading 1 entity\n if (typeof pathMatch === \"object\" && pathMatch.params.id) {\n return {\n resourceId: pathMatch.params.id,\n routeType: RouteType.READ_ONE,\n };\n }\n\n return {\n routeType: RouteType.READ_ALL,\n };\n }\n case \"POST\": {\n const pathMatch = simpleMatcher(realPath);\n\n if (pathMatch) {\n return {\n routeType: RouteType.CREATE,\n };\n }\n\n return {\n routeType: null,\n };\n }\n case \"PUT\":\n case \"PATCH\": {\n const pathMatch = entityMatcher(realPath);\n\n if (typeof pathMatch === \"object\" && pathMatch.params.id) {\n return {\n resourceId: pathMatch.params.id,\n routeType: RouteType.UPDATE,\n };\n }\n\n return {\n routeType: null,\n };\n }\n case \"DELETE\": {\n const pathMatch = entityMatcher(realPath);\n\n if (typeof pathMatch === \"object\" && pathMatch.params.id) {\n return {\n resourceId: pathMatch.params.id,\n routeType: RouteType.DELETE,\n };\n }\n\n return {\n routeType: null,\n };\n }\n default: {\n return {\n routeType: null,\n };\n }\n }\n};\n\nexport interface GetRouteType {\n resourceId?: string;\n routeType: RouteType | null;\n}\n\nexport default getRouteType;\n","import createHttpError from \"http-errors\";\n\nimport type { Adapter } from \"../types.d\";\n\nconst adapterMethods = [\"create\", \"delete\", \"getAll\", \"getOne\", \"parseQuery\", \"update\", \"getPaginationData\", \"getModels\"];\n\nconst validateAdapterMethods = <T, Q>(adapter: Adapter<T, Q>): void => {\n adapterMethods.forEach((method) => {\n if (!adapter[method as keyof Adapter<T, Q>]) {\n throw createHttpError(500, `Adapter must implement the \"${method}\" method.`);\n }\n });\n};\n\nexport default validateAdapterMethods;\n","import type { NextApiRequest, NextApiResponse } from \"next\";\n\nimport baseHandler from \"../../../base-crud-handler\";\nimport type { Adapter, ExecuteHandler, HandlerOptions, ParsedQueryParameters } from \"../../../types.d\";\n\nconst handler = async <\n T,\n Q extends ParsedQueryParameters = any,\n R extends NextApiRequest = NextApiRequest,\n Response extends NextApiResponse = NextApiResponse,\n M extends string = string,\n>(\n adapter: Adapter<T, Q>,\n options?: HandlerOptions<M>,\n): Promise<ExecuteHandler<R, Response>> =>\n await baseHandler<R, Response, T, Q, M>(\n async (response, responseConfig) => {\n response.status(responseConfig.status).send(responseConfig.data);\n },\n async (response) => {\n response.end();\n },\n adapter,\n options,\n );\n\nexport default handler;\n"]}
1
+ {"version":3,"sources":["../../../../node_modules/.pnpm/next@13.4.15_@babel+core@7.23.7_react-dom@18.2.0_react@18.2.0/node_modules/next/src/server/web/spec-extension/adapters/reflect.ts","../../../../node_modules/.pnpm/next@13.4.15_@babel+core@7.23.7_react-dom@18.2.0_react@18.2.0/node_modules/next/src/server/web/spec-extension/adapters/headers.ts","../../../../node_modules/.pnpm/next@13.4.15_@babel+core@7.23.7_react-dom@18.2.0_react@18.2.0/node_modules/next/src/lib/constants.ts","../../../../node_modules/.pnpm/next@13.4.15_@babel+core@7.23.7_react-dom@18.2.0_react@18.2.0/node_modules/next/dist/compiled/cookie/index.js","../../../../node_modules/.pnpm/next@13.4.15_@babel+core@7.23.7_react-dom@18.2.0_react@18.2.0/node_modules/next/src/server/api-utils/index.ts","../../src/next/index.ts","../../src/next/api/edge/index.ts","../../src/base-crud-handler.ts","../../src/handler/create.ts","../../src/handler/delete.ts","../../src/handler/list.ts","../../src/handler/read.ts","../../src/handler/update.ts","../../src/query-parser.ts","../../src/utils/format-resource-id.ts","../../src/utils/get-resource-name-from-url.ts","../../src/utils/get-route-type.ts","../../src/utils/validate-adapter-methods.ts","../../src/next/api/node/index.ts"],"names":["ReflectAdapter","get","target","prop","receiver","value","Reflect","bind","set","has","deleteProperty","ReadonlyHeadersError","HeadersAdapter","Error","constructor","callable","Headers","headers","Proxy","lowercased","toLowerCase","original","Object","keys","find","o","seal","merge","Array","isArray","join","from","append","name","existing","push","delete","forEach","callbackfn","thisArg","entries","call","key","values","Symbol","iterator","NEXT_QUERY_PARAM_PREFIX","PRERENDER_REVALIDATE_HEADER","PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER","CACHE_ONE_YEAR","MIDDLEWARE_FILENAME","MIDDLEWARE_LOCATION_REGEXP","INSTRUMENTATION_HOOK_FILENAME","INSTRUMENTATION_HOOKS_LOCATION_REGEXP","PAGES_DIR_ALIAS","DOT_NEXT_ALIAS","ROOT_DIR_ALIAS","APP_DIR_ALIAS","RSC_MOD_REF_PROXY_ALIAS","RSC_ACTION_VALIDATE_ALIAS","RSC_ACTION_PROXY_ALIAS","RSC_ACTION_CLIENT_WRAPPER_ALIAS","PUBLIC_DIR_MIDDLEWARE_CONFLICT","SSG_GET_INITIAL_PROPS_CONFLICT","SERVER_PROPS_GET_INIT_PROPS_CONFLICT","SERVER_PROPS_SSG_CONFLICT","STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR","SERVER_PROPS_EXPORT_ERROR","GSP_NO_RETURNED_VALUE","GSSP_NO_RETURNED_VALUE","UNSTABLE_REVALIDATE_RENAME_ERROR","GSSP_COMPONENT_MEMBER_ERROR","NON_STANDARD_NODE_ENV","SSG_FALLBACK_EXPORT_ERROR","ESLINT_DEFAULT_DIRS","ESLINT_DEFAULT_DIRS_WITH_APP","ESLINT_PROMPT_VALUES","SERVER_RUNTIME","WEBPACK_LAYERS","WEBPACK_RESOURCE_QUERIES","title","recommended","config","extends","edge","experimentalEdge","nodejs","WEBPACK_LAYERS_NAMES","shared","reactServerComponents","serverSideRendering","actionBrowser","api","middleware","edgeAsset","appPagesBrowser","appMetadataRoute","GROUP","server","edgeSSREntry","metadata","metadataRoute","metadataImageMeta","require_cookie","__commonJSMin","exports","module","init_esm_shims","__dirname","e","r","parse","serialize","i","t","a","n","s","p","f","u","v","c","tryDecode","getCookieParser","sendStatusCode","redirect","checkIsOnDemandRevalidate","COOKIE_NAME_PRERENDER_BYPASS","COOKIE_NAME_PRERENDER_DATA","RESPONSE_LIMIT_DEFAULT","SYMBOL_PREVIEW_DATA","SYMBOL_CLEARED_COOKIES","clearPreviewData","ApiError","sendError","setLazyProp","cookie","parseCookieFn","require","res","statusCode","statusOrUrl","url","writeHead","Location","write","end","req","previewProps","isOnDemandRevalidate","previewModeId","revalidateOnlyGenerated","options","previous","getHeader","setHeader","expires","Date","httpOnly","sameSite","secure","process","path","undefined","defineProperty","enumerable","message","statusMessage","getter","opts","configurable","optsReset","writable","import_api_utils","createHttpError","createHandler","adapter","query","request","resourceName","create_default","deleteHandler","resourceId","delete_default","paginate","listHandler","pagination","isPaginated","paginationOptions","resources","page","total","list_default","readHandler","resource","read_default","updateHandler","update_default","URL","parseRecursive","select","selectFields","field","parseWhere","where","whereObject","parsed","parseOrderBy","orderBy","orderByObject","parseQuery","searchParams","parsedQuery","query_parser_default","formatResourceId","format_resource_id_default","ensureCamelCase","string_","getResourceNameFromUrl","models","realPath","modelName","routeName","camelCaseModel","match","getRouteType","method","entityMatcher","simpleMatcher","pathMatch","get_route_type_default","adapterMethods","validateAdapterMethods","validate_adapter_methods_default","baseHandler","responseExecutor","finalExecutor","error_","error","routeNames","modelRoutes","responseOrContext","routeType","modelConfig","get_accessible_routes_default","resourceIdFormatted","parameters","responseConfig","base_crud_handler_default","handler","_","edge_default","response","node_default"],"mappings":"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","sourcesContent":[null,null,null,"(()=>{\"use strict\";if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var e={};(()=>{var r=e;\n/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */r.parse=parse;r.serialize=serialize;var i=decodeURIComponent;var t=encodeURIComponent;var a=/; */;var n=/^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;function parse(e,r){if(typeof e!==\"string\"){throw new TypeError(\"argument str must be a string\")}var t={};var n=r||{};var o=e.split(a);var s=n.decode||i;for(var p=0;p<o.length;p++){var f=o[p];var u=f.indexOf(\"=\");if(u<0){continue}var v=f.substr(0,u).trim();var c=f.substr(++u,f.length).trim();if('\"'==c[0]){c=c.slice(1,-1)}if(undefined==t[v]){t[v]=tryDecode(c,s)}}return t}function serialize(e,r,i){var a=i||{};var o=a.encode||t;if(typeof o!==\"function\"){throw new TypeError(\"option encode is invalid\")}if(!n.test(e)){throw new TypeError(\"argument name is invalid\")}var s=o(r);if(s&&!n.test(s)){throw new TypeError(\"argument val is invalid\")}var p=e+\"=\"+s;if(null!=a.maxAge){var f=a.maxAge-0;if(isNaN(f)||!isFinite(f)){throw new TypeError(\"option maxAge is invalid\")}p+=\"; Max-Age=\"+Math.floor(f)}if(a.domain){if(!n.test(a.domain)){throw new TypeError(\"option domain is invalid\")}p+=\"; Domain=\"+a.domain}if(a.path){if(!n.test(a.path)){throw new TypeError(\"option path is invalid\")}p+=\"; Path=\"+a.path}if(a.expires){if(typeof a.expires.toUTCString!==\"function\"){throw new TypeError(\"option expires is invalid\")}p+=\"; Expires=\"+a.expires.toUTCString()}if(a.httpOnly){p+=\"; HttpOnly\"}if(a.secure){p+=\"; Secure\"}if(a.sameSite){var u=typeof a.sameSite===\"string\"?a.sameSite.toLowerCase():a.sameSite;switch(u){case true:p+=\"; SameSite=Strict\";break;case\"lax\":p+=\"; SameSite=Lax\";break;case\"strict\":p+=\"; SameSite=Strict\";break;case\"none\":p+=\"; SameSite=None\";break;default:throw new TypeError(\"option sameSite is invalid\")}}return p}function tryDecode(e,r){try{return r(e)}catch(r){return e}}})();module.exports=e})();",null,"export { default as edgeHandler } from \"./api/edge\";\nexport { default as nodeHandler } from \"./api/node\";\n","import baseHandler from \"../../../base-crud-handler\";\nimport type { Adapter, ExecuteHandler, HandlerOptions, ParsedQueryParameters } from \"../../../types.d\";\n\nconst handler = async <T, R extends Request, Context, Q extends ParsedQueryParameters = any, M extends string = string>(\n adapter: Adapter<T, Q>,\n options?: HandlerOptions<M>,\n): Promise<ExecuteHandler<R, Context>> =>\n await baseHandler<R, Context, T, Q, M>(\n async (_, responseConfig) =>\n new Response(JSON.stringify(responseConfig.data), {\n headers: {\n \"content-type\": \"application/json; charset=utf-8\",\n },\n status: responseConfig.status,\n }),\n async () => {},\n adapter,\n options,\n );\n\nexport default handler;\n","import type { IncomingMessage, ServerResponse } from \"node:http\";\n\nimport type { HttpError } from \"http-errors\";\nimport createHttpError from \"http-errors\";\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { ApiError } from \"next/dist/server/api-utils\";\n\nimport createHandler from \"./handler/create\";\nimport deleteHandler from \"./handler/delete\";\nimport listHandler from \"./handler/list\";\nimport readHandler from \"./handler/read\";\nimport updateHandler from \"./handler/update\";\nimport parseQuery from \"./query-parser\";\nimport type { Adapter, ExecuteHandler, HandlerOptions, HandlerParameters, ParsedQueryParameters } from \"./types.d\";\nimport { RouteType } from \"./types.d\";\nimport formatResourceId from \"./utils/format-resource-id\";\nimport getAccessibleRoutes from \"./utils/get-accessible-routes\";\nimport { getResourceNameFromUrl } from \"./utils/get-resource-name-from-url\";\nimport getRouteType from \"./utils/get-route-type\";\nimport validateAdapterMethods from \"./utils/validate-adapter-methods\";\n\ninterface ResponseConfig {\n data: any;\n status: number;\n}\n\nasync function baseHandler<R extends Request, Context, T, Q extends ParsedQueryParameters = any, M extends string = string>(\n responseExecutor: (responseOrContext: Context, responseConfig: ResponseConfig) => Promise<Response>,\n finalExecutor: (responseOrContext: Context) => Promise<void>,\n adapter: Adapter<T, Q>,\n options?: HandlerOptions<M>,\n): Promise<ExecuteHandler<R, Context>>;\n\nasync function baseHandler<R extends IncomingMessage, RResponse extends ServerResponse, T, Q extends ParsedQueryParameters = any, M extends string = string>(\n responseExecutor: (responseOrContext: RResponse, responseConfig: ResponseConfig) => Promise<void>,\n finalExecutor: (responseOrContext: RResponse) => Promise<void>,\n adapter: Adapter<T, Q>,\n options?: HandlerOptions<M>,\n): Promise<ExecuteHandler<R, RResponse>>;\n\n// eslint-disable-next-line sonarjs/cognitive-complexity,func-style\nasync function baseHandler<\n R extends { headers: { host?: string }; method: string; url: string },\n RResponse,\n T,\n Q extends ParsedQueryParameters = any,\n M extends string = string,\n>(\n responseExecutor: (responseOrContext: RResponse, responseConfig: ResponseConfig) => Promise<RResponse>,\n finalExecutor: (responseOrContext: RResponse) => Promise<void>,\n adapter: Adapter<T, Q>,\n options?: HandlerOptions<M>,\n): Promise<ExecuteHandler<R, RResponse>> {\n try {\n validateAdapterMethods(adapter);\n } catch (error_: any) {\n const error = error_ as HttpError;\n\n throw new ApiError(error.statusCode, error.message);\n }\n\n await adapter.init?.();\n\n const config = {\n formatResourceId,\n pagination: {\n perPage: 20,\n },\n ...options,\n };\n\n const routeNames = await adapter.mapModelsToRouteNames?.();\n const modelRoutes: { [key in M]?: string } = {};\n\n adapter.getModels().forEach((modelName) => {\n modelRoutes[modelName as M] = config.models?.[modelName as M]?.name ?? routeNames?.[modelName] ?? modelName;\n });\n\n return async (request, responseOrContext) => {\n const { modelName, resourceName } = getResourceNameFromUrl(request.url, modelRoutes as { [key in M]: string });\n\n if (!resourceName) {\n if (process.env.NODE_ENV === \"development\") {\n const mappedModels = await adapter.mapModelsToRouteNames?.();\n\n if (typeof mappedModels === \"object\") {\n throw createHttpError(404, `Resource not found, possible models: ${Object.values(mappedModels).join(\", \")}`);\n }\n }\n\n throw createHttpError(404, `Resource not found: ${request.url}`);\n }\n\n const { resourceId, routeType } = getRouteType(request.method, request.url, resourceName);\n\n if (routeType === null) {\n throw createHttpError(404, `Route not found: ${request.url}`);\n }\n\n const modelConfig = options?.models?.[modelName as M];\n\n const accessibleRoutes = getAccessibleRoutes(modelConfig?.only, modelConfig?.exclude, options?.exposeStrategy ?? \"all\");\n\n if (!accessibleRoutes.includes(routeType)) {\n throw createHttpError(404, `Route not found: ${request.url}`);\n }\n\n try {\n const resourceIdFormatted = modelConfig?.formatResourceId?.(resourceId as string) ?? config.formatResourceId(resourceId as string);\n\n await adapter.connect?.();\n\n const parsedQuery = parseQuery(`https://${request.headers.host?.replace(/\\/$/u, \"\")}/${request.url}`);\n const parameters: HandlerParameters<T, Q> = {\n adapter,\n query: adapter.parseQuery(modelName as M, parsedQuery),\n resourceName: modelName,\n };\n\n try {\n let responseConfig: ResponseConfig;\n\n switch (routeType) {\n case RouteType.READ_ONE: {\n responseConfig = await (config.handlers?.get ?? readHandler)<T, Q>({\n ...parameters,\n resourceId: resourceIdFormatted,\n });\n break;\n }\n case RouteType.READ_ALL: {\n responseConfig = await (config.handlers?.list ?? listHandler)<T, Q>({\n ...parameters,\n pagination: config.pagination,\n query: {\n ...parameters.query,\n limit: parsedQuery.limit ? Number(parsedQuery.limit) : undefined,\n page: parsedQuery.page ? Number(parsedQuery.page) : undefined,\n },\n });\n break;\n }\n case RouteType.CREATE: {\n responseConfig = await (config.handlers?.create ?? createHandler)<T, Q, R>({\n ...parameters,\n request: request as R & { body: Record<string, any> },\n });\n break;\n }\n case RouteType.UPDATE: {\n responseConfig = await (config.handlers?.update ?? updateHandler)<T, Q, R>({\n ...parameters,\n request: request as R & { body: Partial<T> },\n resourceId: resourceIdFormatted,\n });\n break;\n }\n case RouteType.DELETE: {\n responseConfig = await (config.handlers?.delete ?? deleteHandler)<T, Q>({\n ...parameters,\n resourceId: resourceIdFormatted,\n });\n break;\n }\n default: {\n responseConfig = {\n data: \"Method not found\",\n status: 404,\n };\n }\n }\n\n await responseExecutor(responseOrContext, responseConfig);\n } catch (error: any) {\n if (adapter.handleError && !(error instanceof ApiError)) {\n adapter.handleError(error);\n } else {\n throw error;\n }\n }\n } finally {\n await adapter.disconnect?.();\n\n await finalExecutor(responseOrContext);\n }\n };\n}\n\nexport default baseHandler;\n","import type { HandlerParameters } from \"../types.d\";\n\nconst createHandler: Handler = async ({ adapter, query, request, resourceName }) => {\n const resources = await adapter.create(resourceName, request.body, query);\n\n return {\n data: resources,\n status: 201,\n };\n};\n\nexport type Handler = <T, Q, Request>(\n parameters: HandlerParameters<T, Q> & { request: Request & { body: Record<string, any> } },\n) => Promise<{\n data: any;\n status: number;\n}>;\n\nexport default createHandler;\n","import createHttpError from \"http-errors\";\n\nimport type { UniqueResourceHandlerParameters } from \"../types.d\";\n\nconst deleteHandler: Handler = async ({ adapter, query, resourceId, resourceName }) => {\n const resource = await adapter.getOne(resourceName, resourceId, query);\n\n if (typeof resource === \"object\") {\n const deletedResource = await adapter.delete(resourceName, resourceId, query);\n\n return {\n data: deletedResource,\n status: 200,\n };\n }\n\n throw createHttpError(404, `${resourceName} ${resourceId} not found`);\n};\n\nexport type Handler = <T, Q>(\n parameters: UniqueResourceHandlerParameters<T, Q>,\n) => Promise<{\n data: any;\n status: number;\n}>;\nexport default deleteHandler;\n","import { paginate } from \"@visulima/pagination\";\n\nimport type { HandlerParameters, PaginationConfig, ParsedQueryParameters } from \"../types.d\";\n\ninterface PaginationOptions {\n page: number;\n perPage: number;\n}\n\nconst listHandler: Handler = async ({ adapter, pagination, query, resourceName }) => {\n let isPaginated = false;\n let paginationOptions: PaginationOptions | undefined;\n\n if (query.page !== undefined) {\n if (query.page <= 0) {\n throw new Error(\"page query must be a strictly positive number\");\n }\n\n paginationOptions = {\n page: query.page,\n perPage: query.limit ?? pagination.perPage,\n };\n }\n\n if (paginationOptions) {\n isPaginated = true;\n\n // eslint-disable-next-line no-param-reassign\n query.skip = (paginationOptions.page - 1) * paginationOptions.perPage;\n // eslint-disable-next-line no-param-reassign\n query.limit = paginationOptions.perPage;\n }\n\n const resources = await adapter.getAll(resourceName, query);\n\n if (isPaginated) {\n const { page, total } = await adapter.getPaginationData(resourceName, query);\n\n const paginator = paginate(page, (paginationOptions as PaginationOptions).perPage, total, resources);\n\n return {\n data: paginator.toJSON(),\n status: 200,\n };\n }\n\n return {\n data: resources,\n status: 200,\n };\n};\n\nexport type Handler = <T, Q extends ParsedQueryParameters>(\n parameters: HandlerParameters<T, Q> & { pagination: PaginationConfig },\n) => Promise<{\n data: any;\n status: number;\n}>;\n\nexport default listHandler;\n","import createHttpError from \"http-errors\";\n\nimport type { UniqueResourceHandlerParameters } from \"../types.d\";\n\nconst readHandler: Handler = async ({ adapter, query, resourceId, resourceName }) => {\n const resource = await adapter.getOne(resourceName, resourceId, query);\n\n if (typeof resource !== \"object\") {\n throw createHttpError(404, `${resourceName} ${resourceId} not found`);\n }\n\n return {\n data: resource,\n status: 200,\n };\n};\n\nexport type Handler = <T, Q>(\n parameters: UniqueResourceHandlerParameters<T, Q>,\n) => Promise<{\n data: any;\n status: number;\n}>;\n\nexport default readHandler;\n","import createHttpError from \"http-errors\";\n\nimport type { UniqueResourceHandlerParameters } from \"../types.d\";\n\nconst updateHandler: Handler = async ({ adapter, query, request, resourceId, resourceName }) => {\n const resource = await adapter.getOne(resourceName, resourceId, query);\n\n if (typeof resource === \"object\") {\n const updatedResource = await adapter.update(resourceName, resourceId, request.body, query);\n\n return {\n data: updatedResource,\n status: 201,\n };\n }\n\n throw createHttpError(404, `${resourceName} ${resourceId} not found`);\n};\n\nexport type Handler = <T, Q, Request>(\n parameters: UniqueResourceHandlerParameters<T, Q> & { request: Request & { body: Partial<T> } },\n) => Promise<{\n data: any;\n status: number;\n}>;\n\nexport default updateHandler;\n","import { URL } from \"node:url\";\n\n// eslint-disable-next-line no-restricted-imports\nimport set from \"lodash.set\";\n\nimport type { OrderByField, ParsedQueryParameters, RecursiveField, WhereField } from \"./types.d\";\n\nconst parseRecursive = (select: string): RecursiveField => {\n const selectFields: RecursiveField = {};\n\n const fields = select.split(\",\");\n\n fields.forEach((field) => {\n set(selectFields, field, true);\n });\n\n return selectFields;\n};\n\nconst parseWhere = (where: string): WhereField => {\n const whereObject = JSON.parse(where);\n const parsed: WhereField = {};\n\n Object.keys(whereObject).forEach((key) => {\n set(parsed, key, whereObject[key]);\n });\n\n return parsed;\n};\n\nconst parseOrderBy = (orderBy: string): OrderByField => {\n const parsed: OrderByField = {};\n const orderByObject = JSON.parse(orderBy);\n\n if (Object.keys(orderByObject).length > 0) {\n const key = Object.keys(orderByObject)[0] as string;\n\n if (orderByObject[key as keyof typeof orderByObject] === \"$asc\" || orderByObject[key as keyof typeof orderByObject] === \"$desc\") {\n parsed[key] = orderByObject[key as keyof typeof orderByObject];\n }\n }\n\n if (Object.keys(parsed).length !== 1) {\n throw new Error(\"orderBy needs to be an object with exactly 1 property with either $asc or $desc value\");\n }\n\n return parsed;\n};\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst parseQuery = (url?: string): ParsedQueryParameters => {\n if (url) {\n const { searchParams } = new URL(url);\n const parsedQuery: ParsedQueryParameters = {};\n\n if (searchParams.get(\"select\")) {\n parsedQuery.select = parseRecursive(searchParams.get(\"select\") as string);\n }\n\n if (searchParams.get(\"include\")) {\n parsedQuery.include = parseRecursive(searchParams.get(\"include\") as string);\n }\n\n if (searchParams.get(\"where\")) {\n parsedQuery.where = parseWhere(searchParams.get(\"where\") as string);\n }\n\n if (searchParams.get(\"orderBy\")) {\n parsedQuery.orderBy = parseOrderBy(searchParams.get(\"orderBy\") as string);\n }\n\n if (searchParams.has(\"limit\")) {\n parsedQuery.limit = Number.isFinite(+(searchParams.get(\"limit\") as string)) ? +(searchParams.get(\"limit\") as string) : undefined;\n }\n\n if (searchParams.has(\"skip\")) {\n parsedQuery.skip = Number.isFinite(+(searchParams.get(\"skip\") as string)) ? +(searchParams.get(\"skip\") as string) : undefined;\n }\n\n if (searchParams.get(\"distinct\")) {\n parsedQuery.distinct = searchParams.get(\"distinct\") as string;\n }\n\n if (searchParams.get(\"page\")) {\n parsedQuery.page = Number.isFinite(+(searchParams.get(\"page\") as string)) ? +(searchParams.get(\"page\") as string) : undefined;\n }\n\n return {\n originalQuery: Object.fromEntries(searchParams.entries()),\n ...parsedQuery,\n };\n }\n\n return {};\n};\n\nexport default parseQuery;\n","const formatResourceId = (resourceId: string): number | string => (Number.isSafeInteger(+resourceId) ? +resourceId : resourceId);\n\nexport default formatResourceId;\n","export const ensureCamelCase = (string_: string): string => `${string_.charAt(0).toLowerCase()}${string_.slice(1)}`;\n\nexport const getResourceNameFromUrl = <M extends string = string>(\n url: string,\n models: { [key in M]: string },\n): {\n modelName: string;\n resourceName: string;\n} => {\n // Exclude the query params from the path\n const realPath = url.split(\"?\")[0];\n\n if (realPath === undefined) {\n throw new TypeError(\"Path is undefined\");\n }\n\n const modelName = (Object.keys(models) as M[]).find((name) => {\n const routeName = models[name];\n const camelCaseModel = ensureCamelCase(routeName);\n\n // eslint-disable-next-line @rushstack/security/no-unsafe-regexp,security/detect-non-literal-regexp\n return new RegExp(`(${routeName}|${camelCaseModel}$)|(${routeName}|${camelCaseModel}/)`, \"g\").test(realPath);\n });\n\n if (modelName === undefined) {\n throw new Error(`Couldn't find model ${modelName} name for url ${url}`);\n }\n\n return {\n modelName,\n resourceName: models[modelName],\n };\n};\n","import { match } from \"path-to-regexp\";\n\nimport { RouteType } from \"../types.d\";\n\ninterface PathMatch {\n id: string;\n}\n\nconst getRouteType: (method: string, url: string, resourceName: string) => GetRouteType = (method, url, resourceName) => {\n // Exclude the query params from the path\n const realPath = url.split(\"?\")[0];\n\n if (realPath === undefined) {\n throw new TypeError(\"Path is undefined\");\n }\n\n if (!realPath.includes(`/${resourceName}`)) {\n throw new Error(`invalid resource name '${resourceName}' for route '${realPath}'`);\n }\n\n const entityMatcher = match<PathMatch>([`/(.*)/${resourceName}`, `/(.*)/${resourceName}/:id`], { decode: decodeURIComponent });\n const simpleMatcher = match(`/(.*)/${resourceName}`, {\n decode: decodeURIComponent,\n });\n\n switch (method) {\n case \"GET\": {\n const pathMatch = entityMatcher(realPath);\n\n // If we got a /something after the resource name, we are reading 1 entity\n if (typeof pathMatch === \"object\" && pathMatch.params.id) {\n return {\n resourceId: pathMatch.params.id,\n routeType: RouteType.READ_ONE,\n };\n }\n\n return {\n routeType: RouteType.READ_ALL,\n };\n }\n case \"POST\": {\n const pathMatch = simpleMatcher(realPath);\n\n if (pathMatch) {\n return {\n routeType: RouteType.CREATE,\n };\n }\n\n return {\n routeType: null,\n };\n }\n case \"PUT\":\n case \"PATCH\": {\n const pathMatch = entityMatcher(realPath);\n\n if (typeof pathMatch === \"object\" && pathMatch.params.id) {\n return {\n resourceId: pathMatch.params.id,\n routeType: RouteType.UPDATE,\n };\n }\n\n return {\n routeType: null,\n };\n }\n case \"DELETE\": {\n const pathMatch = entityMatcher(realPath);\n\n if (typeof pathMatch === \"object\" && pathMatch.params.id) {\n return {\n resourceId: pathMatch.params.id,\n routeType: RouteType.DELETE,\n };\n }\n\n return {\n routeType: null,\n };\n }\n default: {\n return {\n routeType: null,\n };\n }\n }\n};\n\nexport interface GetRouteType {\n resourceId?: string;\n routeType: RouteType | null;\n}\n\nexport default getRouteType;\n","import createHttpError from \"http-errors\";\n\nimport type { Adapter } from \"../types.d\";\n\nconst adapterMethods = [\"create\", \"delete\", \"getAll\", \"getOne\", \"parseQuery\", \"update\", \"getPaginationData\", \"getModels\"];\n\nconst validateAdapterMethods = <T, Q>(adapter: Adapter<T, Q>): void => {\n adapterMethods.forEach((method) => {\n if (!adapter[method as keyof Adapter<T, Q>]) {\n throw createHttpError(500, `Adapter must implement the \"${method}\" method.`);\n }\n });\n};\n\nexport default validateAdapterMethods;\n","import type { NextApiRequest, NextApiResponse } from \"next\";\n\nimport baseHandler from \"../../../base-crud-handler\";\nimport type { Adapter, ExecuteHandler, HandlerOptions, ParsedQueryParameters } from \"../../../types.d\";\n\nconst handler = async <\n T,\n Q extends ParsedQueryParameters = any,\n R extends NextApiRequest = NextApiRequest,\n Response extends NextApiResponse = NextApiResponse,\n M extends string = string,\n>(\n adapter: Adapter<T, Q>,\n options?: HandlerOptions<M>,\n): Promise<ExecuteHandler<R, Response>> =>\n await baseHandler<R, Response, T, Q, M>(\n async (response, responseConfig) => {\n response.status(responseConfig.status).send(responseConfig.data);\n },\n async (response) => {\n response.end();\n },\n adapter,\n options,\n );\n\nexport default handler;\n"]}
@@ -157,4 +157,4 @@ interface FakePrismaClient {
157
157
  _getDmmf?: () => any;
158
158
  }
159
159
 
160
- export { Adapter as A, Condition as C, ExecuteHandler as E, FakePrismaClient as F, HandlerOptions as H, ModelsOptions as M, OrderByField as O, PaginationData as P, RouteType as R, SearchCondition as S, UniqueResourceHandlerParameters as U, WhereCondition as W, ParsedQueryParameters as a, HandlerParameters as b, ModelOption as c, OrderByOperator as d, PaginationConfig as e, RecursiveField as f, WhereField as g, WhereOperator as h };
160
+ 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 };
@@ -0,0 +1,160 @@
1
+ type Handler$4 = <T, Q, Request>(parameters: HandlerParameters<T, Q> & {
2
+ request: Request & {
3
+ body: Record<string, any>;
4
+ };
5
+ }) => Promise<{
6
+ data: any;
7
+ status: number;
8
+ }>;
9
+
10
+ type Handler$3 = <T, Q>(parameters: UniqueResourceHandlerParameters<T, Q>) => Promise<{
11
+ data: any;
12
+ status: number;
13
+ }>;
14
+
15
+ type Handler$2 = <T, Q extends ParsedQueryParameters>(parameters: HandlerParameters<T, Q> & {
16
+ pagination: PaginationConfig;
17
+ }) => Promise<{
18
+ data: any;
19
+ status: number;
20
+ }>;
21
+
22
+ type Handler$1 = <T, Q>(parameters: UniqueResourceHandlerParameters<T, Q>) => Promise<{
23
+ data: any;
24
+ status: number;
25
+ }>;
26
+
27
+ type Handler = <T, Q, Request>(parameters: UniqueResourceHandlerParameters<T, Q> & {
28
+ request: Request & {
29
+ body: Partial<T>;
30
+ };
31
+ }) => Promise<{
32
+ data: any;
33
+ status: number;
34
+ }>;
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
+
44
+ interface ModelOption {
45
+ exclude?: RouteType[];
46
+ formatResourceId?: (resourceId: string) => number | string;
47
+ name?: string;
48
+ only?: RouteType[];
49
+ }
50
+
51
+ type ModelsOptions<M extends string = string> = {
52
+ [key in M]?: ModelOption;
53
+ };
54
+
55
+ interface HandlerOptions<M extends string = string> {
56
+ exposeStrategy?: "all" | "none";
57
+ formatResourceId?: (resourceId: string) => number | string;
58
+ handlers?: {
59
+ create?: Handler$4;
60
+ delete?: Handler$3;
61
+ get?: Handler$1;
62
+ list?: Handler$2;
63
+ update?: Handler;
64
+ };
65
+ models?: ModelsOptions<M>;
66
+ pagination?: PaginationConfig;
67
+ }
68
+
69
+ interface PaginationConfig {
70
+ perPage: number;
71
+ }
72
+
73
+ interface HandlerParameters<T, Q> {
74
+ adapter: Adapter<T, Q>;
75
+ query: Q;
76
+ resourceName: string;
77
+ }
78
+
79
+ interface UniqueResourceHandlerParameters<T, Q> {
80
+ adapter: Adapter<T, Q>;
81
+ query: Q;
82
+ resourceId: number | string;
83
+ resourceName: string;
84
+ }
85
+
86
+ interface Adapter<T, Q, M extends string = string> {
87
+ connect?: () => Promise<void>;
88
+ create: (resourceName: M, data: any, query: Q) => Promise<T>;
89
+ delete: (resourceName: M, resourceId: number | string, query: Q) => Promise<T>;
90
+ disconnect?: () => Promise<void>;
91
+ getAll: (resourceName: M, query: Q) => Promise<T[]>;
92
+ getModels: () => M[];
93
+ getOne: (resourceName: M, resourceId: number | string, query: Q) => Promise<T>;
94
+ getPaginationData: (resourceName: M, query: Q) => Promise<PaginationData>;
95
+ handleError?: (error: Error) => void;
96
+ init?: () => Promise<void>;
97
+ mapModelsToRouteNames?: () => Promise<{ [key in M]?: string }>;
98
+ models?: M[];
99
+ parseQuery: (resourceName: M, query: ParsedQueryParameters) => Q;
100
+ update: (resourceName: M, resourceId: number | string, data: any, query: Q) => Promise<T>;
101
+ }
102
+
103
+ interface PaginationData {
104
+ page: number;
105
+ pageCount: number;
106
+ total: number;
107
+ }
108
+
109
+ type RecursiveField = Record<string, Record<string, boolean> | boolean>;
110
+
111
+ type WhereOperator = "$cont" | "$ends" | "$eq" | "$gt" | "$gte" | "$in" | "$isnull" | "$lt" | "$lte" | "$neq" | "$notin" | "$starts";
112
+
113
+ type SearchCondition = Date | boolean | number | string | null;
114
+
115
+ type WhereCondition = {
116
+ [key in WhereOperator]?: SearchCondition;
117
+ };
118
+
119
+ // TODO: find the correct way to type this
120
+ // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents
121
+ type Condition = Record<string, Condition | SearchCondition | WhereCondition>;
122
+
123
+ // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents
124
+ type WhereField = Condition & {
125
+ // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents
126
+ $and?: Condition | Condition[];
127
+ // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents
128
+ $not?: Condition | Condition[];
129
+ // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents
130
+ $or?: Condition | Condition[];
131
+ };
132
+
133
+ type OrderByOperator = "$asc" | "$desc";
134
+
135
+ type OrderByField = Record<string, OrderByOperator>;
136
+
137
+ interface ParsedQueryParameters {
138
+ distinct?: string;
139
+ include?: RecursiveField;
140
+ limit?: number;
141
+ orderBy?: OrderByField;
142
+ originalQuery?: Record<string, any>;
143
+ page?: number;
144
+ select?: RecursiveField;
145
+ skip?: number;
146
+ where?: WhereField;
147
+ }
148
+
149
+ type ExecuteHandler<Request, Response> = (request: Request, response: Response) => Promise<void>;
150
+
151
+ interface FakePrismaClient {
152
+ $connect: () => void;
153
+ $disconnect: () => Promise<void>;
154
+ [key: string]: any;
155
+ _dmmf?: any;
156
+
157
+ _getDmmf?: () => any;
158
+ }
159
+
160
+ 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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visulima/crud",
3
- "version": "2.0.10",
3
+ "version": "2.0.12",
4
4
  "description": "visulima crud",
5
5
  "keywords": [
6
6
  "anolilab",
@@ -69,7 +69,6 @@
69
69
  "build": "rimraf dist && cross-env NODE_ENV=development tsup",
70
70
  "build:prod": "rimraf dist && cross-env NODE_ENV=production tsup",
71
71
  "clean": "rimraf node_modules dist .eslintcache",
72
- "coverage": "vitest run --coverage",
73
72
  "dev": "pnpm run build --watch",
74
73
  "lint:eslint": "eslint . --ext js,cjs,mjs,jsx,ts,tsx,json,yaml,yml,md,mdx --max-warnings=0 --config .eslintrc.js",
75
74
  "lint:eslint:fix": "eslint . --ext js,cjs,mjs,jsx,ts,tsx,json,yaml,yml,md,mdx --max-warnings=0 --config .eslintrc.js --fix",
@@ -78,49 +77,52 @@
78
77
  "lint:prettier:fix": "prettier --config=.prettierrc.js --write .",
79
78
  "lint:types": "tsc --noEmit",
80
79
  "test": "vitest run",
80
+ "test:coverage": "vitest run --coverage",
81
+ "test:ui": "vitest --ui --coverage.enabled=true",
81
82
  "test:watch": "vitest"
82
83
  },
83
84
  "dependencies": {
84
- "@visulima/pagination": "3.0.10",
85
- "@visulima/prisma-dmmf-transformer": "2.0.10",
85
+ "@visulima/pagination": "3.0.11",
86
+ "@visulima/prisma-dmmf-transformer": "2.0.12",
86
87
  "http-errors": "^2.0.0",
87
88
  "lodash.set": "^4.3.2",
88
89
  "path-to-regexp": "^6.2.1"
89
90
  },
90
91
  "devDependencies": {
91
- "@anolilab/eslint-config": "^15.0.2",
92
- "@anolilab/prettier-config": "^5.0.13",
93
- "@anolilab/semantic-release-preset": "^8.0.2",
94
- "@babel/core": "^7.23.5",
92
+ "@anolilab/eslint-config": "^15.0.3",
93
+ "@anolilab/prettier-config": "^5.0.14",
94
+ "@anolilab/semantic-release-preset": "^8.0.3",
95
+ "@babel/core": "^7.23.7",
95
96
  "@prisma/client": "4.16.2",
96
- "@rushstack/eslint-plugin-security": "^0.7.1",
97
+ "@rushstack/eslint-plugin-security": "^0.8.0",
97
98
  "@types/http-errors": "^2.0.4",
98
99
  "@types/json-schema": "7.0.15",
99
100
  "@types/lodash.set": "^4.3.9",
100
101
  "@types/node": "18.18.8",
101
- "@vitest/coverage-v8": "^0.34.6",
102
+ "@vitest/coverage-v8": "^1.2.1",
103
+ "@vitest/ui": "^1.2.1",
102
104
  "cross-env": "^7.0.3",
103
- "eslint": "^8.54.0",
105
+ "eslint": "^8.56.0",
104
106
  "eslint-plugin-deprecation": "^2.0.0",
105
107
  "eslint-plugin-etc": "^2.0.3",
106
- "eslint-plugin-import": "npm:eslint-plugin-i@^2.29.0",
108
+ "eslint-plugin-import": "npm:eslint-plugin-i@^2.29.1",
107
109
  "eslint-plugin-jsx-a11y": "^6.8.0",
108
- "eslint-plugin-mdx": "^2.2.0",
110
+ "eslint-plugin-mdx": "^3.1.5",
109
111
  "eslint-plugin-ssr-friendly": "^1.3.0",
110
112
  "eslint-plugin-validate-jsx-nesting": "^0.1.1",
111
- "eslint-plugin-vitest": "^0.3.10",
113
+ "eslint-plugin-vitest": "^0.3.20",
112
114
  "eslint-plugin-vitest-globals": "^1.4.0",
113
115
  "next": "^12.0.0 || ^13.0.0",
114
- "next-test-api-route-handler": "^4.0.0-canary.1",
115
- "node-mocks-http": "^1.13.0",
116
+ "next-test-api-route-handler": "^4.0.3",
117
+ "node-mocks-http": "^1.14.1",
116
118
  "openapi-types": "^12.1.3",
117
- "prettier": "^3.1.0",
119
+ "prettier": "^3.2.4",
118
120
  "rimraf": "^5.0.5",
119
- "semantic-release": "^22.0.8",
121
+ "semantic-release": "^23.0.0",
120
122
  "sort-package-json": "^2.6.0",
121
123
  "tsup": "^8.0.1",
122
- "typescript": "^5.3.2",
123
- "vitest": "^0.34.6"
124
+ "typescript": "^5.3.3",
125
+ "vitest": "^1.2.1"
124
126
  },
125
127
  "engines": {
126
128
  "node": ">=18.* <=21.*"