@visulima/crud 3.0.0-alpha.15 → 3.0.0-alpha.17
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 +28 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.mjs +1 -1
- package/dist/next/index.cjs +1 -1
- package/dist/next/index.d.cts +1 -1
- package/dist/next/index.d.mts +1 -1
- package/dist/next/index.d.ts +1 -1
- package/dist/next/index.mjs +1 -1
- package/dist/packem_shared/PrismaAdapter-BVs7BWSG.mjs +1 -0
- package/dist/packem_shared/PrismaAdapter-Buz6dEMm.cjs +1 -0
- package/dist/packem_shared/base-crud-handler-BJJ5vmOh.mjs +1 -0
- package/dist/packem_shared/base-crud-handler-Cm23eHkD.cjs +1 -0
- package/dist/packem_shared/{edgeHandler-CaIWVXt-.cjs → edgeHandler-CHig8R94.cjs} +1 -1
- package/dist/packem_shared/{edgeHandler-Deds33h_.mjs → edgeHandler-DfRlSUUt.mjs} +1 -1
- package/dist/packem_shared/{nodeHandler-CeBCrxYT.mjs → nodeHandler-BdR0fuw-.mjs} +1 -1
- package/dist/packem_shared/{nodeHandler-D7AuOmUo.cjs → nodeHandler-Di5MpzCj.cjs} +1 -1
- package/dist/packem_shared/{types.d-C_XaTdLA.d.cts → types.d-BDmE9rKc.d.cts} +1 -1
- package/dist/packem_shared/{types.d-C_XaTdLA.d.mts → types.d-BDmE9rKc.d.mts} +1 -1
- package/dist/packem_shared/{types.d-C_XaTdLA.d.ts → types.d-BDmE9rKc.d.ts} +1 -1
- package/package.json +3 -3
- package/dist/packem_shared/PrismaAdapter-D0WRtRlB.cjs +0 -1
- package/dist/packem_shared/PrismaAdapter-EuQr18sT.mjs +0 -1
- package/dist/packem_shared/base-crud-handler-B6xOUGDj.cjs +0 -1
- package/dist/packem_shared/base-crud-handler-DNKq7uog.mjs +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,31 @@
|
|
|
1
|
+
## @visulima/crud [3.0.0-alpha.17](https://github.com/visulima/visulima/compare/@visulima/crud@3.0.0-alpha.16...@visulima/crud@3.0.0-alpha.17) (2026-06-04)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* **crud:** 5 bug fixes ([77a51d0](https://github.com/visulima/visulima/commit/77a51d0d2d5221fe043283defe15672eb47c9a38))
|
|
6
|
+
* **lint:** clear pre-existing eslint rot across packages ([#674](https://github.com/visulima/visulima/issues/674)) ([5354253](https://github.com/visulima/visulima/commit/5354253b163bd50bcefaf8a3fddf831bdb5df32b))
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Dependencies
|
|
10
|
+
|
|
11
|
+
* **@visulima/pagination:** upgraded to 5.0.0-alpha.13
|
|
12
|
+
* **@visulima/prisma-dmmf-transformer:** upgraded to 3.0.0-alpha.15
|
|
13
|
+
|
|
14
|
+
## @visulima/crud [3.0.0-alpha.16](https://github.com/visulima/visulima/compare/@visulima/crud@3.0.0-alpha.15...@visulima/crud@3.0.0-alpha.16) (2026-06-02)
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
* **tests:** revert unsafe vitest autofixes from the lint sweep ([378f27c](https://github.com/visulima/visulima/commit/378f27caa370f1d3188aef2ed36d46839abc88c4))
|
|
19
|
+
|
|
20
|
+
### Miscellaneous Chores
|
|
21
|
+
|
|
22
|
+
* apply eslint + prettier autofixes across packages ([c1bb784](https://github.com/visulima/visulima/commit/c1bb7848a0d93d0dfe2960c77e3cda22239c79a0))
|
|
23
|
+
|
|
24
|
+
### Tests
|
|
25
|
+
|
|
26
|
+
* **crud:** cover json-schema parser traversal, missing-resource 404s, query/where parsing ([5b5f0f1](https://github.com/visulima/visulima/commit/5b5f0f115d86edbe4a1e88f5f35ac1f617e97c82))
|
|
27
|
+
* improve coverage across packages ([91bd6d3](https://github.com/visulima/visulima/commit/91bd6d3b61736e3c8bd1fc59b0b5955f76a5d323))
|
|
28
|
+
|
|
1
29
|
## @visulima/crud [3.0.0-alpha.15](https://github.com/visulima/visulima/compare/@visulima/crud@3.0.0-alpha.14...@visulima/crud@3.0.0-alpha.15) (2026-05-27)
|
|
2
30
|
|
|
3
31
|
### Bug Fixes
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./packem_shared/PrismaAdapter-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./packem_shared/PrismaAdapter-Buz6dEMm.cjs"),r=require("./packem_shared/modelsToOpenApi-CsQL5VTy.cjs"),o=require("./packem_shared/RouteType-DLV_OhhD.cjs");exports.PrismaAdapter=e;exports.modelsToOpenApi=r;exports.RouteType=o.RouteType;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { HttpError } from 'http-errors';
|
|
2
|
-
import { C as Condition, S as SearchCondition, F as FakePrismaClient, P as PaginationData, a as ParsedQueryParameters, A as Adapter, R as RouteType, M as ModelsOptions } from "./packem_shared/types.d-
|
|
3
|
-
export { type H as CrudHandlerOptions, type b as HandlerParameters, type c as ModelOption, type O as OrderByField, type d as OrderByOperator, type e as PaginationConfig, type f as RecursiveField, type U as UniqueResourceHandlerParameters, type W as WhereCondition, type g as WhereField, type h as WhereOperator } from "./packem_shared/types.d-
|
|
2
|
+
import { C as Condition, S as SearchCondition, F as FakePrismaClient, P as PaginationData, a as ParsedQueryParameters, A as Adapter, R as RouteType, M as ModelsOptions } from "./packem_shared/types.d-BDmE9rKc.cjs";
|
|
3
|
+
export { type H as CrudHandlerOptions, type b as HandlerParameters, type c as ModelOption, type O as OrderByField, type d as OrderByOperator, type e as PaginationConfig, type f as RecursiveField, type U as UniqueResourceHandlerParameters, type W as WhereCondition, type g as WhereField, type h as WhereOperator } from "./packem_shared/types.d-BDmE9rKc.cjs";
|
|
4
4
|
import { OpenAPIV3 } from 'openapi-types';
|
|
5
5
|
type PrismaRecursiveField = "include" | "select";
|
|
6
6
|
type PrismaRecursive<T extends PrismaRecursiveField> = Record<string, boolean | { [key in T]: PrismaRecursive<T> }>;
|
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, F as FakePrismaClient, P as PaginationData, a as ParsedQueryParameters, A as Adapter, R as RouteType, M as ModelsOptions } from "./packem_shared/types.d-
|
|
3
|
-
export { type H as CrudHandlerOptions, type b as HandlerParameters, type c as ModelOption, type O as OrderByField, type d as OrderByOperator, type e as PaginationConfig, type f as RecursiveField, type U as UniqueResourceHandlerParameters, type W as WhereCondition, type g as WhereField, type h as WhereOperator } from "./packem_shared/types.d-
|
|
2
|
+
import { C as Condition, S as SearchCondition, F as FakePrismaClient, P as PaginationData, a as ParsedQueryParameters, A as Adapter, R as RouteType, M as ModelsOptions } from "./packem_shared/types.d-BDmE9rKc.mjs";
|
|
3
|
+
export { type H as CrudHandlerOptions, type b as HandlerParameters, type c as ModelOption, type O as OrderByField, type d as OrderByOperator, type e as PaginationConfig, type f as RecursiveField, type U as UniqueResourceHandlerParameters, type W as WhereCondition, type g as WhereField, type h as WhereOperator } from "./packem_shared/types.d-BDmE9rKc.mjs";
|
|
4
4
|
import { OpenAPIV3 } from 'openapi-types';
|
|
5
5
|
type PrismaRecursiveField = "include" | "select";
|
|
6
6
|
type PrismaRecursive<T extends PrismaRecursiveField> = Record<string, boolean | { [key in T]: PrismaRecursive<T> }>;
|
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, F as FakePrismaClient, P as PaginationData, a as ParsedQueryParameters, A as Adapter, R as RouteType, M as ModelsOptions } from "./packem_shared/types.d-
|
|
3
|
-
export { type H as CrudHandlerOptions, type b as HandlerParameters, type c as ModelOption, type O as OrderByField, type d as OrderByOperator, type e as PaginationConfig, type f as RecursiveField, type U as UniqueResourceHandlerParameters, type W as WhereCondition, type g as WhereField, type h as WhereOperator } from "./packem_shared/types.d-
|
|
2
|
+
import { C as Condition, S as SearchCondition, F as FakePrismaClient, P as PaginationData, a as ParsedQueryParameters, A as Adapter, R as RouteType, M as ModelsOptions } from "./packem_shared/types.d-BDmE9rKc.js";
|
|
3
|
+
export { type H as CrudHandlerOptions, type b as HandlerParameters, type c as ModelOption, type O as OrderByField, type d as OrderByOperator, type e as PaginationConfig, type f as RecursiveField, type U as UniqueResourceHandlerParameters, type W as WhereCondition, type g as WhereField, type h as WhereOperator } from "./packem_shared/types.d-BDmE9rKc.js";
|
|
4
4
|
import { OpenAPIV3 } from 'openapi-types';
|
|
5
5
|
type PrismaRecursiveField = "include" | "select";
|
|
6
6
|
type PrismaRecursive<T extends PrismaRecursiveField> = Record<string, boolean | { [key in T]: PrismaRecursive<T> }>;
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{default as r}from"./packem_shared/PrismaAdapter-
|
|
1
|
+
import{default as r}from"./packem_shared/PrismaAdapter-BVs7BWSG.mjs";import{default as t}from"./packem_shared/modelsToOpenApi-ocNrUF5p.mjs";import{RouteType as f}from"./packem_shared/RouteType-BQ2RxFPE.mjs";export{r as PrismaAdapter,f as RouteType,t as modelsToOpenApi};
|
package/dist/next/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../packem_shared/edgeHandler-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../packem_shared/edgeHandler-CHig8R94.cjs"),r=require("../packem_shared/nodeHandler-Di5MpzCj.cjs");exports.edgeHandler=e;exports.nodeHandler=r;
|
package/dist/next/index.d.cts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
/// <reference types="react/experimental" preserve="true" />
|
|
4
4
|
/// <reference types="react-dom" preserve="true" />
|
|
5
5
|
/// <reference types="react-dom/experimental" preserve="true" />
|
|
6
|
-
import { a as ParsedQueryParameters, A as Adapter, H as HandlerOptions, E as ExecuteHandler } from "../packem_shared/types.d-
|
|
6
|
+
import { a as ParsedQueryParameters, A as Adapter, H as HandlerOptions, E as ExecuteHandler } from "../packem_shared/types.d-BDmE9rKc.cjs";
|
|
7
7
|
import { IncomingMessage, ServerResponse, Agent } from 'http';
|
|
8
8
|
import { Agent as Agent$1 } from 'https';
|
|
9
9
|
import { ParsedUrlQuery } from 'querystring';
|
package/dist/next/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as ParsedQueryParameters, A as Adapter, H as HandlerOptions, E as ExecuteHandler } from "../packem_shared/types.d-
|
|
1
|
+
import { a as ParsedQueryParameters, A as Adapter, H as HandlerOptions, E as ExecuteHandler } from "../packem_shared/types.d-BDmE9rKc.mjs";
|
|
2
2
|
import { IncomingMessage, ServerResponse, Agent } from 'http';
|
|
3
3
|
import { Agent as Agent$1 } from 'https';
|
|
4
4
|
import { ParsedUrlQuery } from 'querystring';
|
package/dist/next/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as ParsedQueryParameters, A as Adapter, H as HandlerOptions, E as ExecuteHandler } from "../packem_shared/types.d-
|
|
1
|
+
import { a as ParsedQueryParameters, A as Adapter, H as HandlerOptions, E as ExecuteHandler } from "../packem_shared/types.d-BDmE9rKc.js";
|
|
2
2
|
import { IncomingMessage, ServerResponse, Agent } from 'http';
|
|
3
3
|
import { Agent as Agent$1 } from 'https';
|
|
4
4
|
import { ParsedUrlQuery } from 'querystring';
|
package/dist/next/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{default as d}from"../packem_shared/edgeHandler-
|
|
1
|
+
import{default as d}from"../packem_shared/edgeHandler-DfRlSUUt.mjs";import{default as o}from"../packem_shared/nodeHandler-BdR0fuw-.mjs";export{d as edgeHandler,o as nodeHandler};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var P=Object.defineProperty;var n=(r,t)=>P(r,"name",{value:t,configurable:!0});import p from"http-errors";import{a as k}from"./models-to-route-names-UU1lZmbK.mjs";var O=Object.defineProperty,C=n((r,t)=>O(r,"name",{value:t,configurable:!0}),"n$1");const j=new Set(["boolean","number","string"]),u=C(r=>j.has(typeof r),"isPrimitive");var M=Object.defineProperty,E=n((r,t)=>M(r,"name",{value:t,configurable:!0}),"s$1");const D=E(r=>{const t={};if(Object.keys(r).forEach(e=>{const s=r[e];u(s)&&(t[e]=s)}),Object.keys(t).length!==1)throw new Error("cursor needs to be an object with exactly 1 property with a primitive value");return t},"parsePrismaCursor");var R=Object.defineProperty,K=n((r,t)=>R(r,"name",{value:t,configurable:!0}),"a");const q={$asc:"asc",$desc:"desc"},B=K(r=>{const t={};return Object.keys(r).forEach(e=>{const s=r[e];t[e]=q[s]}),t},"parsePrismaOrderBy");var S=Object.defineProperty,A=n((r,t)=>S(r,"name",{value:t,configurable:!0}),"u$1");const m=A((r,t)=>{const e={};return Object.keys(r).forEach(s=>{e[s]=r[s]===!0?!0:{[t]:m(r[s],t)}}),e},"parsePrismaRecursiveField");var N=Object.defineProperty,a=n((r,t)=>N(r,"name",{value:t,configurable:!0}),"r");const c=a(r=>r instanceof Object,"isObject"),_={$cont:"contains",$ends:"endsWith",$eq:"equals",$gt:"gt",$gte:"gte",$in:"in",$lt:"lt",$lte:"lte",$neq:"not",$notin:"notIn",$starts:"startsWith"},F=a(r=>/^\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(r),"isDateString"),Q=a(r=>F(r)?new Date(r):typeof r=="string"&&r==="$isnull"?null:r,"getSearchValue"),f=a((r,t)=>{const e=r.split(".");return e.splice(-1,1),t.includes(e.join("."))},"isRelation"),g=a(r=>{const t=Object.keys(r)[0],e=_[t];if(e)return{[e]:r[t]}},"parseSimpleField"),w=a((r,t,e,s)=>{const i=t.split(".").toReversed();let o={};i.forEach((h,v)=>{v===0?b(r,h,o,s):o={[h]:{some:o}}});const l=i.toReversed()[0],$=e[l];e[l]={some:{...$?.some,...o[l]?.some}}},"parseRelation"),d=a((r,t)=>{const e={};return Object.keys(r).forEach(s=>{const i=r[s];if(f(s,t))w(i,s,e,t);else if(u(i))e[s]=i;else if(c(i)){const o=g(i);o&&(e[s]=o)}}),e},"parseObjectCombination"),b=a((r,t,e,s)=>{if(u(r))e[t]=Q(r);else switch(t){case"$and":{c(r)&&(e.AND=d(r,s));break}case"$not":{c(r)&&(e.NOT=d(r,s));break}case"$or":{c(r)&&(e.OR=d(r,s));break}default:{e[t]=g(r);break}}},"basicParse"),T=a((r,t)=>{const e={};return Object.keys(r).forEach(s=>{const i=r[s];f(s,t)?w(i,s,e,t):b(i,s,e,t)}),e},"parsePrismaWhere");var W=Object.defineProperty,y=n((r,t)=>W(r,"name",{value:t,configurable:!0}),"s");class J{static{n(this,"P")}static{y(this,"PrismaAdapter")}models;ctorModels;dmmf;manyRelations;primaryKey;prismaClient;constructor({manyRelations:t={},models:e,primaryKey:s="id",prismaClient:i}){this.prismaClient=i,this.primaryKey=s,this.manyRelations=t,this.ctorModels=e}async connect(){return await this.prismaClient.$connect()}async create(t,e,s){return await this.getPrismaDelegate(t).create({data:e,include:s.include,select:s.select})}async delete(t,e,s){return await this.getPrismaDelegate(t).delete({include:s.include,select:s.select,where:{[this.primaryKey]:e}})}async disconnect(){await this.prismaClient.$disconnect()}async getAll(t,e){return await this.getPrismaDelegate(t).findMany({cursor:e.cursor,distinct:e.distinct,include:e.include,orderBy:e.orderBy,select:e.select,skip:e.skip,take:e.take,where:e.where})}getModels(){return this.models??[]}async getOne(t,e,s){const i=this.getPrismaDelegate(t);return await(i.findUnique??i.findOne)({include:s.include,select:s.select,where:{[this.primaryKey]:e}})}async getPaginationData(t,e){const s=await this.getPrismaDelegate(t).count({distinct:e.distinct,where:e.where}),i=e.take??0;return{page:i>0?Math.ceil((e.skip??0)/i)+1:1,pageCount:i>0?Math.ceil(s/i):0,total:s}}handleError(t){throw console.error(t),t instanceof Error&&t.stack&&console.error(t.stack),t.constructor.name==="PrismaClientKnownRequestError"||t.constructor.name==="PrismaClientValidationError"?p(400,"invalid request, check your server logs for more info"):p(500,"an unknown error occured, check your server logs for more info")}async init(){const t=this.ctorModels,e=await this.getPrismaClientModels();t!==void 0&&t.forEach(s=>{if(!Object.keys(e).includes(s))throw new Error(`Model name ${s} is invalid.`)}),this.models=t??Object.keys(e)}async mapModelsToRouteNames(){return k(await this.getPrismaClientModels(),this.getModels())}parseQuery(t,e){const s={};return e.select&&(s.select=m(e.select,"select")),e.include&&(s.include=m(e.include,"include")),e.where&&(s.where=T(e.where,this.manyRelations[t]??[])),e.orderBy&&(s.orderBy=B(e.orderBy)),e.limit!==void 0&&(s.take=e.limit),e.skip!==void 0&&(s.skip=e.skip),e.originalQuery?.cursor&&(s.cursor=D(JSON.parse(e.originalQuery.cursor))),e.distinct&&(s.distinct=e.distinct),s}async update(t,e,s,i){return await this.getPrismaDelegate(t).update({data:s,include:i.include,select:i.select,where:{[this.primaryKey]:e}})}get client(){return this.prismaClient}getPrismaClientModels=y(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")},"getPrismaClientModels");getPrismaDelegate(t){return this.prismaClient[`${t.charAt(0).toLowerCase()}${t.slice(1)}`]}}export{J as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var P=Object.defineProperty;var a=(r,t)=>P(r,"name",{value:t,configurable:!0});const k=require("http-errors"),O=require("./models-to-route-names-Dh2b_kIL.cjs"),C=a(r=>r&&typeof r=="object"&&"default"in r?r.default:r,"_interopDefaultCompat"),p=C(k);var j=Object.defineProperty,M=a((r,t)=>j(r,"name",{value:t,configurable:!0}),"n$1");const D=new Set(["boolean","number","string"]),m=M(r=>D.has(typeof r),"isPrimitive");var E=Object.defineProperty,R=a((r,t)=>E(r,"name",{value:t,configurable:!0}),"s$1");const q=R(r=>{const t={};if(Object.keys(r).forEach(e=>{const s=r[e];m(s)&&(t[e]=s)}),Object.keys(t).length!==1)throw new Error("cursor needs to be an object with exactly 1 property with a primitive value");return t},"parsePrismaCursor");var K=Object.defineProperty,_=a((r,t)=>K(r,"name",{value:t,configurable:!0}),"a");const B={$asc:"asc",$desc:"desc"},N=_(r=>{const t={};return Object.keys(r).forEach(e=>{const s=r[e];t[e]=B[s]}),t},"parsePrismaOrderBy");var S=Object.defineProperty,A=a((r,t)=>S(r,"name",{value:t,configurable:!0}),"u$1");const u=A((r,t)=>{const e={};return Object.keys(r).forEach(s=>{e[s]=r[s]===!0?!0:{[t]:u(r[s],t)}}),e},"parsePrismaRecursiveField");var T=Object.defineProperty,n=a((r,t)=>T(r,"name",{value:t,configurable:!0}),"r");const c=n(r=>r instanceof Object,"isObject"),F={$cont:"contains",$ends:"endsWith",$eq:"equals",$gt:"gt",$gte:"gte",$in:"in",$lt:"lt",$lte:"lte",$neq:"not",$notin:"notIn",$starts:"startsWith"},Q=n(r=>/^\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(r),"isDateString"),W=n(r=>Q(r)?new Date(r):typeof r=="string"&&r==="$isnull"?null:r,"getSearchValue"),f=n((r,t)=>{const e=r.split(".");return e.splice(-1,1),t.includes(e.join("."))},"isRelation"),g=n(r=>{const t=Object.keys(r)[0],e=F[t];if(e)return{[e]:r[t]}},"parseSimpleField"),b=n((r,t,e,s)=>{const i=t.split(".").toReversed();let o={};i.forEach((h,v)=>{v===0?w(r,h,o,s):o={[h]:{some:o}}});const l=i.toReversed()[0],$=e[l];e[l]={some:{...$?.some,...o[l]?.some}}},"parseRelation"),d=n((r,t)=>{const e={};return Object.keys(r).forEach(s=>{const i=r[s];if(f(s,t))b(i,s,e,t);else if(m(i))e[s]=i;else if(c(i)){const o=g(i);o&&(e[s]=o)}}),e},"parseObjectCombination"),w=n((r,t,e,s)=>{if(m(r))e[t]=W(r);else switch(t){case"$and":{c(r)&&(e.AND=d(r,s));break}case"$not":{c(r)&&(e.NOT=d(r,s));break}case"$or":{c(r)&&(e.OR=d(r,s));break}default:{e[t]=g(r);break}}},"basicParse"),x=n((r,t)=>{const e={};return Object.keys(r).forEach(s=>{const i=r[s];f(s,t)?b(i,s,e,t):w(i,s,e,t)}),e},"parsePrismaWhere");var V=Object.defineProperty,y=a((r,t)=>V(r,"name",{value:t,configurable:!0}),"s");class I{static{a(this,"P")}static{y(this,"PrismaAdapter")}models;ctorModels;dmmf;manyRelations;primaryKey;prismaClient;constructor({manyRelations:t={},models:e,primaryKey:s="id",prismaClient:i}){this.prismaClient=i,this.primaryKey=s,this.manyRelations=t,this.ctorModels=e}async connect(){return await this.prismaClient.$connect()}async create(t,e,s){return await this.getPrismaDelegate(t).create({data:e,include:s.include,select:s.select})}async delete(t,e,s){return await this.getPrismaDelegate(t).delete({include:s.include,select:s.select,where:{[this.primaryKey]:e}})}async disconnect(){await this.prismaClient.$disconnect()}async getAll(t,e){return await this.getPrismaDelegate(t).findMany({cursor:e.cursor,distinct:e.distinct,include:e.include,orderBy:e.orderBy,select:e.select,skip:e.skip,take:e.take,where:e.where})}getModels(){return this.models??[]}async getOne(t,e,s){const i=this.getPrismaDelegate(t);return await(i.findUnique??i.findOne)({include:s.include,select:s.select,where:{[this.primaryKey]:e}})}async getPaginationData(t,e){const s=await this.getPrismaDelegate(t).count({distinct:e.distinct,where:e.where}),i=e.take??0;return{page:i>0?Math.ceil((e.skip??0)/i)+1:1,pageCount:i>0?Math.ceil(s/i):0,total:s}}handleError(t){throw console.error(t),t instanceof Error&&t.stack&&console.error(t.stack),t.constructor.name==="PrismaClientKnownRequestError"||t.constructor.name==="PrismaClientValidationError"?p(400,"invalid request, check your server logs for more info"):p(500,"an unknown error occured, check your server logs for more info")}async init(){const t=this.ctorModels,e=await this.getPrismaClientModels();t!==void 0&&t.forEach(s=>{if(!Object.keys(e).includes(s))throw new Error(`Model name ${s} is invalid.`)}),this.models=t??Object.keys(e)}async mapModelsToRouteNames(){return O.a(await this.getPrismaClientModels(),this.getModels())}parseQuery(t,e){const s={};return e.select&&(s.select=u(e.select,"select")),e.include&&(s.include=u(e.include,"include")),e.where&&(s.where=x(e.where,this.manyRelations[t]??[])),e.orderBy&&(s.orderBy=N(e.orderBy)),e.limit!==void 0&&(s.take=e.limit),e.skip!==void 0&&(s.skip=e.skip),e.originalQuery?.cursor&&(s.cursor=q(JSON.parse(e.originalQuery.cursor))),e.distinct&&(s.distinct=e.distinct),s}async update(t,e,s,i){return await this.getPrismaDelegate(t).update({data:s,include:i.include,select:i.select,where:{[this.primaryKey]:e}})}get client(){return this.prismaClient}getPrismaClientModels=y(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")},"getPrismaClientModels");getPrismaDelegate(t){return this.prismaClient[`${t.charAt(0).toLowerCase()}${t.slice(1)}`]}}module.exports=I;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var M=Object.defineProperty;var u=(e,r)=>M(e,"name",{value:r,configurable:!0});import{createRequire as B}from"node:module";import y from"http-errors";import{ApiError as R}from"next/dist/server/api-utils/index.js";import{paginate as Q}from"@visulima/pagination";import{RouteType as f}from"./RouteType-BQ2RxFPE.mjs";import{E as J}from"./get-accessible-routes-xHYBQ_6q.mjs";import{match as _}from"path-to-regexp";const U=B(import.meta.url),h=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,H=u(e=>{if(typeof h<"u"&&h.versions&&h.versions.node){const[r,t]=h.versions.node.split(".").map(Number);if(r>22||r===22&&t>=3||r===20&&t>=16)return h.getBuiltinModule(e)}return U(e)},"__cjs_getBuiltinModule"),{URL:G}=H("node:url");var K=Object.defineProperty,z=u((e,r)=>K(e,"name",{value:r,configurable:!0}),"t");const X=z(async({adapter:e,query:r,request:t,resourceName:n})=>({data:await e.create(n,t.body,r),status:201}),"createHandler");var W=Object.defineProperty,V=u((e,r)=>W(e,"name",{value:r,configurable:!0}),"r$3");const Y=V(async({adapter:e,query:r,resourceId:t,resourceName:n})=>{if(await e.getOne(n,t,r))return{data:await e.delete(n,t,r),status:200};throw y(404,`${n} ${String(t)} not found`)},"deleteHandler");var Z=Object.defineProperty,ee=u((e,r)=>Z(e,"name",{value:r,configurable:!0}),"g$2");const re=ee(async({adapter:e,pagination:r,query:t,resourceName:n})=>{let a=!1,i;if(t.page!==void 0){if(t.page<=0)throw new Error("page query must be a strictly positive number");i={page:t.page,perPage:t.limit??r.perPage}}i&&(a=!0,t.skip=(i.page-1)*i.perPage,t.take=i.perPage);const o=await e.getAll(n,t);if(a){const{page:s,total:l}=await e.getPaginationData(n,t);return{data:Q(s,i.perPage,l,o).toJSON(),status:200}}return{data:o,status:200}},"listHandler");var te=Object.defineProperty,ne=u((e,r)=>te(e,"name",{value:r,configurable:!0}),"o$1");const ae=ne(async({adapter:e,query:r,resourceId:t,resourceName:n})=>{const a=await e.getOne(n,t,r);if(!a)throw y(404,`${n} ${String(t)} not found`);return{data:a,status:200}},"readHandler");var oe=Object.defineProperty,ie=u((e,r)=>oe(e,"name",{value:r,configurable:!0}),"d$3");const se=ie(async({adapter:e,query:r,request:t,resourceId:n,resourceName:a})=>{if(await e.getOne(a,n,r))return{data:await e.update(a,n,t.body,r),status:201};throw y(404,`${a} ${String(n)} not found`)},"updateHandler");var ue=Object.defineProperty,c=u((e,r)=>ue(e,"name",{value:r,configurable:!0}),"f");const d=c(e=>{const r=typeof e;return e!==null&&(r==="object"||r==="function")},"isObject"),ce=c(e=>{if(!d(e))return!1;for(const r in e)if(Object.hasOwn(e,r))return!1;return!0},"isEmptyObject"),S=new Set(["__proto__","prototype","constructor"]),q=1e6,pe=c(e=>e>="0"&&e<="9","isDigit");function m(e){if(e==="0")return!0;if(/^[1-9]\d*$/.test(e)){const r=Number.parseInt(e,10);return r<=Number.MAX_SAFE_INTEGER&&r<=q}return!1}u(m,"p$1");c(m,"shouldCoerceToNumber");function w(e,r){return S.has(e)?!1:(e&&m(e)?r.push(Number.parseInt(e,10)):r.push(e),!0)}u(w,"y");c(w,"processSegment");function C(e){if(typeof e!="string")throw new TypeError(`Expected a string, got ${typeof e}`);const r=[];let t="",n="start",a=!1,i=0;for(const o of e){if(i++,a){t+=o,a=!1;continue}if(o==="\\"){if(n==="index")throw new Error(`Invalid character '${o}' in an index at position ${i}`);if(n==="indexEnd")throw new Error(`Invalid character '${o}' after an index at position ${i}`);a=!0,n=n==="start"?"property":n;continue}switch(o){case".":{if(n==="index")throw new Error(`Invalid character '${o}' in an index at position ${i}`);if(n==="indexEnd"){n="property";break}if(!w(t,r))return[];t="",n="property";break}case"[":{if(n==="index")throw new Error(`Invalid character '${o}' in an index at position ${i}`);if(n==="indexEnd"){n="index";break}if(n==="property"||n==="start"){if((t||n==="property")&&!w(t,r))return[];t=""}n="index";break}case"]":{if(n==="index"){if(t==="")t=(r.pop()||"")+"[]",n="property";else{const s=Number.parseInt(t,10);!Number.isNaN(s)&&Number.isFinite(s)&&s>=0&&s<=Number.MAX_SAFE_INTEGER&&s<=q&&t===String(s)?r.push(s):r.push(t),t="",n="indexEnd"}break}if(n==="indexEnd")throw new Error(`Invalid character '${o}' after an index at position ${i}`);t+=o;break}default:{if(n==="index"&&!pe(o))throw new Error(`Invalid character '${o}' in an index at position ${i}`);if(n==="indexEnd")throw new Error(`Invalid character '${o}' after an index at position ${i}`);n==="start"&&(n="property"),t+=o}}}switch(a&&(t+="\\"),n){case"property":{if(!w(t,r))return[];break}case"index":throw new Error("Index was not closed");case"start":{r.push("");break}}return r}u(C,"parsePath");c(C,"parsePath");function b(e){if(typeof e=="string")return C(e);if(Array.isArray(e)){const r=[];for(const[t,n]of e.entries()){if(typeof n!="string"&&typeof n!="number")throw new TypeError(`Expected a string or number for path segment at index ${t}, got ${typeof n}`);if(typeof n=="number"&&!Number.isFinite(n))throw new TypeError(`Path segment at index ${t} must be a finite number, got ${n}`);if(S.has(n))return[];typeof n=="string"&&m(n)?r.push(Number.parseInt(n,10)):r.push(n)}return r}return[]}u(b,"d$2");c(b,"normalizePath");function fe(e,r,t){if(!d(e)||typeof r!="string"&&!Array.isArray(r))return t===void 0?e:t;const n=b(r);if(n.length===0)return t;for(let a=0;a<n.length;a++){const i=n[a];if(e=e[i],e==null){if(a!==n.length-1)return t;break}}return e===void 0?t:e}u(fe,"getProperty");c(fe,"getProperty");function $(e,r,t){if(!d(e)||typeof r!="string"&&!Array.isArray(r))return e;const n=e,a=b(r);if(a.length===0)return e;for(let i=0;i<a.length;i++){const o=a[i];if(i===a.length-1)e[o]=t;else if(!d(e[o])){const s=typeof a[i+1]=="number";e[o]=s?[]:{}}e=e[o]}return n}u($,"setProperty");c($,"setProperty");function de(e,r){if(!d(e)||typeof r!="string"&&!Array.isArray(r))return!1;const t=b(r);if(t.length===0)return!1;for(let n=0;n<t.length;n++){const a=t[n];if(n===t.length-1)return Object.hasOwn(e,a)?(delete e[a],!0):!1;if(e=e[a],!d(e))return!1}}u(de,"deleteProperty");c(de,"deleteProperty");function le(e,r){if(!d(e)||typeof r!="string"&&!Array.isArray(r))return!1;const t=b(r);if(t.length===0)return!1;for(const n of t){if(!d(e)||!(n in e))return!1;e=e[n]}return!0}u(le,"hasProperty");c(le,"hasProperty");function A(e){if(typeof e!="string")throw new TypeError(`Expected a string, got ${typeof e}`);return e.replaceAll(/[\\.[]/g,String.raw`\$&`)}u(A,"escapePath");c(A,"escapePath");function D(e){const r=Object.entries(e);return Array.isArray(e)?r.map(([t,n])=>[m(t)?Number.parseInt(t,10):t,n]):r}u(D,"m");c(D,"normalizeEntries");function F(e,r={}){if(!Array.isArray(e))throw new TypeError(`Expected an array, got ${typeof e}`);const{preferDotForIndices:t=!1}=r,n=[];for(const[a,i]of e.entries()){if(typeof i!="string"&&typeof i!="number")throw new TypeError(`Expected a string or number for path segment at index ${a}, got ${typeof i}`);if(typeof i=="number")if(!Number.isInteger(i)||i<0){const o=A(String(i));n.push(a===0?o:`.${o}`)}else t&&a>0?n.push(`.${i}`):n.push(`[${i}]`);else if(typeof i=="string")if(i==="")a===0||n.push(".");else if(m(i)){const o=Number.parseInt(i,10);t&&a>0?n.push(`.${o}`):n.push(`[${o}]`)}else{const o=A(i);n.push(a===0?o:`.${o}`)}}return n.join("")}u(F,"stringifyPath");c(F,"stringifyPath");function*I(e,r=[],t=new Set){if(!d(e)||ce(e)){r.length>0&&(yield F(r));return}if(!t.has(e)){t.add(e);for(const[n,a]of D(e))r.push(n),yield*I(a,r,t),r.pop();t.delete(e)}}u(I,"x");c(I,"deepKeysIterator");function ye(e){return[...I(e)]}u(ye,"deepKeys");c(ye,"deepKeys");function ge(e){const r={};if(!d(e))return r;for(const[t,n]of Object.entries(e))$(r,t,n);return r}u(ge,"unflatten");c(ge,"unflatten");var he=Object.defineProperty,E=u((e,r)=>he(e,"name",{value:r,configurable:!0}),"i$1");const k=E(e=>{const r={};return e.split(",").forEach(t=>{$(r,t,!0)}),r},"parseRecursive"),me=E(e=>{const r=JSON.parse(e),t={};return Object.keys(r).forEach(n=>{$(t,n,r[n])}),t},"parseWhere"),be=E(e=>{const r=JSON.parse(e),t=Object.keys(r),n=t[0];if(t.length!==1||n===void 0||r[n]!=="$asc"&&r[n]!=="$desc")throw new Error("orderBy needs to be an object with exactly 1 property with either $asc or $desc value");return{[n]:r[n]}},"parseOrderBy"),we=E(e=>{if(e){const{searchParams:r}=new G(e),t={};return r.get("select")&&(t.select=k(r.get("select"))),r.get("include")&&(t.include=k(r.get("include"))),r.get("where")&&(t.where=me(r.get("where"))),r.get("orderBy")&&(t.orderBy=be(r.get("orderBy"))),r.has("limit")&&(t.limit=Number.isFinite(+r.get("limit"))?+r.get("limit"):void 0),r.has("skip")&&(t.skip=Number.isFinite(+r.get("skip"))?+r.get("skip"):void 0),r.get("distinct")&&(t.distinct=r.get("distinct")),r.get("page")&&(t.page=Number.isFinite(+r.get("page"))?+r.get("page"):void 0),{originalQuery:Object.fromEntries(r.entries()),...t}}return{}},"parseQuery");var $e=Object.defineProperty,Ee=u((e,r)=>$e(e,"name",{value:r,configurable:!0}),"e");const ve=Ee(e=>Number.isSafeInteger(+e)?+e:e,"formatResourceId");var Pe=Object.defineProperty,L=u((e,r)=>Pe(e,"name",{value:r,configurable:!0}),"s");const Ne=L(e=>`${e.charAt(0).toLowerCase()}${e.slice(1)}`,"ensureCamelCase"),Te=L((e,r)=>{const t=e.split("?")[0];if(t===void 0)throw new TypeError("Path is undefined");const n=t.split("/").filter(Boolean),a=Object.keys(r).find(i=>{const o=r[i];return o===""?!0:n.includes(o)||n.includes(Ne(o))});if(a===void 0)throw new Error(`Couldn't find model name for url ${e}`);return{modelName:a,resourceName:r[a]}},"getResourceNameFromUrl");var xe=Object.defineProperty,Ae=u((e,r)=>xe(e,"name",{value:r,configurable:!0}),"u");const Ie=Ae((e,r,t)=>{const n=r.split("?")[0];if(n===void 0)throw new TypeError("Path is undefined");if(!n.includes(`/${t}`))throw new Error(`invalid resource name '${t}' for route '${n}'`);const a=_(`/*placeholder/${t}{/:id}`,{decode:decodeURIComponent}),i=_(`/*placeholder/${t}`,{decode:decodeURIComponent});switch(e){case"DELETE":{const o=a(n);return typeof o=="object"&&o.params.id?{resourceId:o.params.id,routeType:f.DELETE}:{routeType:null}}case"GET":{const o=a(n);return typeof o=="object"&&o.params.id?{resourceId:o.params.id,routeType:f.READ_ONE}:{routeType:f.READ_ALL}}case"PATCH":case"PUT":{const o=a(n);return typeof o=="object"&&o.params.id?{resourceId:o.params.id,routeType:f.UPDATE}:{routeType:null}}case"POST":return i(n)?{routeType:f.CREATE}:{routeType:null};default:return{routeType:null}}},"getRouteType");var Oe=Object.defineProperty,je=u((e,r)=>Oe(e,"name",{value:r,configurable:!0}),"a");const Re=["create","delete","getAll","getOne","parseQuery","update","getPaginationData","getModels"],_e=je(e=>{Re.forEach(r=>{if(!e[r])throw y(500,`Adapter must implement the "${r}" method.`)})},"validateAdapterMethods");var ke=Object.defineProperty,Se=u((e,r)=>ke(e,"name",{value:r,configurable:!0}),"h");const qe=/\/$/u;async function Ce(e,r,t,n){try{_e(t)}catch(s){const l=s;throw new R(l.statusCode,l.message)}await t.init?.();const a={formatResourceId:ve,pagination:{perPage:20},...n},i=await t.mapModelsToRouteNames?.(),o={};return t.getModels().forEach(s=>{o[s]=a.models?.[s]?.name??i?.[s]??s}),async(s,l)=>{const{modelName:v,resourceName:O}=Te(s.url,o);if(!O)throw y(404,`Resource not found: ${s.url}`);const{resourceId:j,routeType:P}=Ie(s.method,s.url,O);if(P===null)throw y(404,`Route not found: ${s.url}`);const N=n?.models?.[v];if(!J(N?.only,N?.exclude,n?.exposeStrategy??"all").includes(P))throw y(404,`Route not found: ${s.url}`);try{const T=N?.formatResourceId?.(j)??a.formatResourceId(j);await t.connect?.();const x=we(`https://${s.headers.host?.replace(qe,"")??""}/${s.url}`),g={adapter:t,query:t.parseQuery(v,x),resourceName:v};try{let p;switch(P){case f.CREATE:{p=await(a.handlers?.create??X)({...g,request:s});break}case f.DELETE:{p=await(a.handlers?.delete??Y)({...g,resourceId:T});break}case f.READ_ALL:{p=await(a.handlers?.list??re)({...g,pagination:a.pagination,query:{...g.query,limit:x.limit??void 0,page:x.page??void 0}});break}case f.READ_ONE:{p=await(a.handlers?.get??ae)({...g,resourceId:T});break}case f.UPDATE:{p=await(a.handlers?.update??se)({...g,request:s,resourceId:T});break}default:p={data:"Method not found",status:404}}await e(l,p)}catch(p){if(t.handleError&&!(p instanceof R))t.handleError(p);else throw p}}finally{await t.disconnect?.(),await r(l)}}}u(Ce,"N");Se(Ce,"baseHandler");export{Ce as N};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var U=Object.defineProperty;var u=(e,t)=>U(e,"name",{value:t,configurable:!0});const H=require("http-errors"),O=require("next/dist/server/api-utils/index.js"),M=require("@visulima/pagination"),B=require("node:url"),d=require("./RouteType-DLV_OhhD.cjs"),Q=require("./get-accessible-routes-DLLL11KB.cjs"),j=require("path-to-regexp"),G=u(e=>e&&typeof e=="object"&&"default"in e?e.default:e,"_interopDefaultCompat"),y=G(H);var J=Object.defineProperty,K=u((e,t)=>J(e,"name",{value:t,configurable:!0}),"t");const z=K(async({adapter:e,query:t,request:n,resourceName:r})=>({data:await e.create(r,n.body,t),status:201}),"createHandler");var X=Object.defineProperty,W=u((e,t)=>X(e,"name",{value:t,configurable:!0}),"r$3");const V=W(async({adapter:e,query:t,resourceId:n,resourceName:r})=>{if(await e.getOne(r,n,t))return{data:await e.delete(r,n,t),status:200};throw y(404,`${r} ${String(n)} not found`)},"deleteHandler");var Y=Object.defineProperty,Z=u((e,t)=>Y(e,"name",{value:t,configurable:!0}),"g$2");const ee=Z(async({adapter:e,pagination:t,query:n,resourceName:r})=>{let a=!1,i;if(n.page!==void 0){if(n.page<=0)throw new Error("page query must be a strictly positive number");i={page:n.page,perPage:n.limit??t.perPage}}i&&(a=!0,n.skip=(i.page-1)*i.perPage,n.take=i.perPage);const o=await e.getAll(r,n);if(a){const{page:s,total:l}=await e.getPaginationData(r,n);return{data:M.paginate(s,i.perPage,l,o).toJSON(),status:200}}return{data:o,status:200}},"listHandler");var te=Object.defineProperty,re=u((e,t)=>te(e,"name",{value:t,configurable:!0}),"o$1");const ne=re(async({adapter:e,query:t,resourceId:n,resourceName:r})=>{const a=await e.getOne(r,n,t);if(!a)throw y(404,`${r} ${String(n)} not found`);return{data:a,status:200}},"readHandler");var ae=Object.defineProperty,oe=u((e,t)=>ae(e,"name",{value:t,configurable:!0}),"d$3");const ie=oe(async({adapter:e,query:t,request:n,resourceId:r,resourceName:a})=>{if(await e.getOne(a,r,t))return{data:await e.update(a,r,n.body,t),status:201};throw y(404,`${a} ${String(r)} not found`)},"updateHandler");var se=Object.defineProperty,c=u((e,t)=>se(e,"name",{value:t,configurable:!0}),"f");const f=c(e=>{const t=typeof e;return e!==null&&(t==="object"||t==="function")},"isObject"),ue=c(e=>{if(!f(e))return!1;for(const t in e)if(Object.hasOwn(e,t))return!1;return!0},"isEmptyObject"),q=new Set(["__proto__","prototype","constructor"]),S=1e6,ce=c(e=>e>="0"&&e<="9","isDigit");function h(e){if(e==="0")return!0;if(/^[1-9]\d*$/.test(e)){const t=Number.parseInt(e,10);return t<=Number.MAX_SAFE_INTEGER&&t<=S}return!1}u(h,"p$1");c(h,"shouldCoerceToNumber");function w(e,t){return q.has(e)?!1:(e&&h(e)?t.push(Number.parseInt(e,10)):t.push(e),!0)}u(w,"y");c(w,"processSegment");function _(e){if(typeof e!="string")throw new TypeError(`Expected a string, got ${typeof e}`);const t=[];let n="",r="start",a=!1,i=0;for(const o of e){if(i++,a){n+=o,a=!1;continue}if(o==="\\"){if(r==="index")throw new Error(`Invalid character '${o}' in an index at position ${i}`);if(r==="indexEnd")throw new Error(`Invalid character '${o}' after an index at position ${i}`);a=!0,r=r==="start"?"property":r;continue}switch(o){case".":{if(r==="index")throw new Error(`Invalid character '${o}' in an index at position ${i}`);if(r==="indexEnd"){r="property";break}if(!w(n,t))return[];n="",r="property";break}case"[":{if(r==="index")throw new Error(`Invalid character '${o}' in an index at position ${i}`);if(r==="indexEnd"){r="index";break}if(r==="property"||r==="start"){if((n||r==="property")&&!w(n,t))return[];n=""}r="index";break}case"]":{if(r==="index"){if(n==="")n=(t.pop()||"")+"[]",r="property";else{const s=Number.parseInt(n,10);!Number.isNaN(s)&&Number.isFinite(s)&&s>=0&&s<=Number.MAX_SAFE_INTEGER&&s<=S&&n===String(s)?t.push(s):t.push(n),n="",r="indexEnd"}break}if(r==="indexEnd")throw new Error(`Invalid character '${o}' after an index at position ${i}`);n+=o;break}default:{if(r==="index"&&!ce(o))throw new Error(`Invalid character '${o}' in an index at position ${i}`);if(r==="indexEnd")throw new Error(`Invalid character '${o}' after an index at position ${i}`);r==="start"&&(r="property"),n+=o}}}switch(a&&(n+="\\"),r){case"property":{if(!w(n,t))return[];break}case"index":throw new Error("Index was not closed");case"start":{t.push("");break}}return t}u(_,"parsePath");c(_,"parsePath");function m(e){if(typeof e=="string")return _(e);if(Array.isArray(e)){const t=[];for(const[n,r]of e.entries()){if(typeof r!="string"&&typeof r!="number")throw new TypeError(`Expected a string or number for path segment at index ${n}, got ${typeof r}`);if(typeof r=="number"&&!Number.isFinite(r))throw new TypeError(`Path segment at index ${n} must be a finite number, got ${r}`);if(q.has(r))return[];typeof r=="string"&&h(r)?t.push(Number.parseInt(r,10)):t.push(r)}return t}return[]}u(m,"d$2");c(m,"normalizePath");function pe(e,t,n){if(!f(e)||typeof t!="string"&&!Array.isArray(t))return n===void 0?e:n;const r=m(t);if(r.length===0)return n;for(let a=0;a<r.length;a++){const i=r[a];if(e=e[i],e==null){if(a!==r.length-1)return n;break}}return e===void 0?n:e}u(pe,"getProperty");c(pe,"getProperty");function b(e,t,n){if(!f(e)||typeof t!="string"&&!Array.isArray(t))return e;const r=e,a=m(t);if(a.length===0)return e;for(let i=0;i<a.length;i++){const o=a[i];if(i===a.length-1)e[o]=n;else if(!f(e[o])){const s=typeof a[i+1]=="number";e[o]=s?[]:{}}e=e[o]}return r}u(b,"setProperty");c(b,"setProperty");function de(e,t){if(!f(e)||typeof t!="string"&&!Array.isArray(t))return!1;const n=m(t);if(n.length===0)return!1;for(let r=0;r<n.length;r++){const a=n[r];if(r===n.length-1)return Object.hasOwn(e,a)?(delete e[a],!0):!1;if(e=e[a],!f(e))return!1}}u(de,"deleteProperty");c(de,"deleteProperty");function fe(e,t){if(!f(e)||typeof t!="string"&&!Array.isArray(t))return!1;const n=m(t);if(n.length===0)return!1;for(const r of n){if(!f(e)||!(r in e))return!1;e=e[r]}return!0}u(fe,"hasProperty");c(fe,"hasProperty");function A(e){if(typeof e!="string")throw new TypeError(`Expected a string, got ${typeof e}`);return e.replaceAll(/[\\.[]/g,String.raw`\$&`)}u(A,"escapePath");c(A,"escapePath");function C(e){const t=Object.entries(e);return Array.isArray(e)?t.map(([n,r])=>[h(n)?Number.parseInt(n,10):n,r]):t}u(C,"m");c(C,"normalizeEntries");function D(e,t={}){if(!Array.isArray(e))throw new TypeError(`Expected an array, got ${typeof e}`);const{preferDotForIndices:n=!1}=t,r=[];for(const[a,i]of e.entries()){if(typeof i!="string"&&typeof i!="number")throw new TypeError(`Expected a string or number for path segment at index ${a}, got ${typeof i}`);if(typeof i=="number")if(!Number.isInteger(i)||i<0){const o=A(String(i));r.push(a===0?o:`.${o}`)}else n&&a>0?r.push(`.${i}`):r.push(`[${i}]`);else if(typeof i=="string")if(i==="")a===0||r.push(".");else if(h(i)){const o=Number.parseInt(i,10);n&&a>0?r.push(`.${o}`):r.push(`[${o}]`)}else{const o=A(i);r.push(a===0?o:`.${o}`)}}return r.join("")}u(D,"stringifyPath");c(D,"stringifyPath");function*x(e,t=[],n=new Set){if(!f(e)||ue(e)){t.length>0&&(yield D(t));return}if(!n.has(e)){n.add(e);for(const[r,a]of C(e))t.push(r),yield*x(a,t,n),t.pop();n.delete(e)}}u(x,"x");c(x,"deepKeysIterator");function le(e){return[...x(e)]}u(le,"deepKeys");c(le,"deepKeys");function ye(e){const t={};if(!f(e))return t;for(const[n,r]of Object.entries(e))b(t,n,r);return t}u(ye,"unflatten");c(ye,"unflatten");var ge=Object.defineProperty,$=u((e,t)=>ge(e,"name",{value:t,configurable:!0}),"i$1");const k=$(e=>{const t={};return e.split(",").forEach(n=>{b(t,n,!0)}),t},"parseRecursive"),he=$(e=>{const t=JSON.parse(e),n={};return Object.keys(t).forEach(r=>{b(n,r,t[r])}),n},"parseWhere"),me=$(e=>{const t=JSON.parse(e),n=Object.keys(t),r=n[0];if(n.length!==1||r===void 0||t[r]!=="$asc"&&t[r]!=="$desc")throw new Error("orderBy needs to be an object with exactly 1 property with either $asc or $desc value");return{[r]:t[r]}},"parseOrderBy"),we=$(e=>{if(e){const{searchParams:t}=new B.URL(e),n={};return t.get("select")&&(n.select=k(t.get("select"))),t.get("include")&&(n.include=k(t.get("include"))),t.get("where")&&(n.where=he(t.get("where"))),t.get("orderBy")&&(n.orderBy=me(t.get("orderBy"))),t.has("limit")&&(n.limit=Number.isFinite(+t.get("limit"))?+t.get("limit"):void 0),t.has("skip")&&(n.skip=Number.isFinite(+t.get("skip"))?+t.get("skip"):void 0),t.get("distinct")&&(n.distinct=t.get("distinct")),t.get("page")&&(n.page=Number.isFinite(+t.get("page"))?+t.get("page"):void 0),{originalQuery:Object.fromEntries(t.entries()),...n}}return{}},"parseQuery");var be=Object.defineProperty,$e=u((e,t)=>be(e,"name",{value:t,configurable:!0}),"e");const Ee=$e(e=>Number.isSafeInteger(+e)?+e:e,"formatResourceId");var ve=Object.defineProperty,F=u((e,t)=>ve(e,"name",{value:t,configurable:!0}),"s");const Pe=F(e=>`${e.charAt(0).toLowerCase()}${e.slice(1)}`,"ensureCamelCase"),Te=F((e,t)=>{const n=e.split("?")[0];if(n===void 0)throw new TypeError("Path is undefined");const r=n.split("/").filter(Boolean),a=Object.keys(t).find(i=>{const o=t[i];return o===""?!0:r.includes(o)||r.includes(Pe(o))});if(a===void 0)throw new Error(`Couldn't find model name for url ${e}`);return{modelName:a,resourceName:t[a]}},"getResourceNameFromUrl");var Ne=Object.defineProperty,Ae=u((e,t)=>Ne(e,"name",{value:t,configurable:!0}),"u");const xe=Ae((e,t,n)=>{const r=t.split("?")[0];if(r===void 0)throw new TypeError("Path is undefined");if(!r.includes(`/${n}`))throw new Error(`invalid resource name '${n}' for route '${r}'`);const a=j.match(`/*placeholder/${n}{/:id}`,{decode:decodeURIComponent}),i=j.match(`/*placeholder/${n}`,{decode:decodeURIComponent});switch(e){case"DELETE":{const o=a(r);return typeof o=="object"&&o.params.id?{resourceId:o.params.id,routeType:d.RouteType.DELETE}:{routeType:null}}case"GET":{const o=a(r);return typeof o=="object"&&o.params.id?{resourceId:o.params.id,routeType:d.RouteType.READ_ONE}:{routeType:d.RouteType.READ_ALL}}case"PATCH":case"PUT":{const o=a(r);return typeof o=="object"&&o.params.id?{resourceId:o.params.id,routeType:d.RouteType.UPDATE}:{routeType:null}}case"POST":return i(r)?{routeType:d.RouteType.CREATE}:{routeType:null};default:return{routeType:null}}},"getRouteType");var Re=Object.defineProperty,Ie=u((e,t)=>Re(e,"name",{value:t,configurable:!0}),"a");const Oe=["create","delete","getAll","getOne","parseQuery","update","getPaginationData","getModels"],je=Ie(e=>{Oe.forEach(t=>{if(!e[t])throw y(500,`Adapter must implement the "${t}" method.`)})},"validateAdapterMethods");var ke=Object.defineProperty,qe=u((e,t)=>ke(e,"name",{value:t,configurable:!0}),"h");const Se=/\/$/u;async function L(e,t,n,r){try{je(n)}catch(s){const l=s;throw new O.ApiError(l.statusCode,l.message)}await n.init?.();const a={formatResourceId:Ee,pagination:{perPage:20},...r},i=await n.mapModelsToRouteNames?.(),o={};return n.getModels().forEach(s=>{o[s]=a.models?.[s]?.name??i?.[s]??s}),async(s,l)=>{const{modelName:E,resourceName:R}=Te(s.url,o);if(!R)throw y(404,`Resource not found: ${s.url}`);const{resourceId:I,routeType:v}=xe(s.method,s.url,R);if(v===null)throw y(404,`Route not found: ${s.url}`);const P=r?.models?.[E];if(!Q.E(P?.only,P?.exclude,r?.exposeStrategy??"all").includes(v))throw y(404,`Route not found: ${s.url}`);try{const T=P?.formatResourceId?.(I)??a.formatResourceId(I);await n.connect?.();const N=we(`https://${s.headers.host?.replace(Se,"")??""}/${s.url}`),g={adapter:n,query:n.parseQuery(E,N),resourceName:E};try{let p;switch(v){case d.RouteType.CREATE:{p=await(a.handlers?.create??z)({...g,request:s});break}case d.RouteType.DELETE:{p=await(a.handlers?.delete??V)({...g,resourceId:T});break}case d.RouteType.READ_ALL:{p=await(a.handlers?.list??ee)({...g,pagination:a.pagination,query:{...g.query,limit:N.limit??void 0,page:N.page??void 0}});break}case d.RouteType.READ_ONE:{p=await(a.handlers?.get??ne)({...g,resourceId:T});break}case d.RouteType.UPDATE:{p=await(a.handlers?.update??ie)({...g,request:s,resourceId:T});break}default:p={data:"Method not found",status:404}}await e(l,p)}catch(p){if(n.handleError&&!(p instanceof O.ApiError))n.handleError(p);else throw p}}finally{await n.disconnect?.(),await t(l)}}}u(L,"N");qe(L,"baseHandler");exports.N=L;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var n=Object.defineProperty;var t=(e,a)=>n(e,"name",{value:a,configurable:!0});const r=require("./base-crud-handler-
|
|
1
|
+
"use strict";var n=Object.defineProperty;var t=(e,a)=>n(e,"name",{value:a,configurable:!0});const r=require("./base-crud-handler-Cm23eHkD.cjs");var c=Object.defineProperty,o=t((e,a)=>c(e,"name",{value:a,configurable:!0}),"r");const u=o(async(e,a)=>await r.N(async(d,s)=>Response.json(s.data,{headers:{"content-type":"application/json; charset=utf-8"},status:s.status}),async()=>{},e,a),"handler");module.exports=u;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var n=Object.defineProperty;var s=(a,t)=>n(a,"name",{value:t,configurable:!0});import{N as r}from"./base-crud-handler-
|
|
1
|
+
var n=Object.defineProperty;var s=(a,t)=>n(a,"name",{value:t,configurable:!0});import{N as r}from"./base-crud-handler-BJJ5vmOh.mjs";var o=Object.defineProperty,c=s((a,t)=>o(a,"name",{value:t,configurable:!0}),"r");const i=c(async(a,t)=>await r(async(p,e)=>Response.json(e.data,{headers:{"content-type":"application/json; charset=utf-8"},status:e.status}),async()=>{},a,t),"handler");export{i as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var r=Object.defineProperty;var s=(a,e)=>r(a,"name",{value:e,configurable:!0});import{N as d}from"./base-crud-handler-
|
|
1
|
+
var r=Object.defineProperty;var s=(a,e)=>r(a,"name",{value:e,configurable:!0});import{N as d}from"./base-crud-handler-BJJ5vmOh.mjs";var c=Object.defineProperty,o=s((a,e)=>c(a,"name",{value:e,configurable:!0}),"a");const i=o(async(a,e)=>await d(async(t,n)=>{t.status(n.status).send(n.data)},async t=>{t.end()},a,e),"handler");export{i as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var r=Object.defineProperty;var n=(a,e)=>r(a,"name",{value:e,configurable:!0});const c=require("./base-crud-handler-
|
|
1
|
+
"use strict";var r=Object.defineProperty;var n=(a,e)=>r(a,"name",{value:e,configurable:!0});const c=require("./base-crud-handler-Cm23eHkD.cjs");var d=Object.defineProperty,u=n((a,e)=>d(a,"name",{value:e,configurable:!0}),"a");const i=u(async(a,e)=>await c.N(async(s,t)=>{s.status(t.status).send(t.data)},async s=>{s.end()},a,e),"handler");module.exports=i;
|
|
@@ -117,7 +117,7 @@ interface ParsedQueryParameters {
|
|
|
117
117
|
}
|
|
118
118
|
type ExecuteHandler<Request, Response> = (request: Request, response: Response) => Promise<void>;
|
|
119
119
|
interface FakePrismaClient {
|
|
120
|
-
$connect: () => void;
|
|
120
|
+
$connect: () => Promise<void> | void;
|
|
121
121
|
$disconnect: () => Promise<void>;
|
|
122
122
|
[key: string]: unknown;
|
|
123
123
|
_dmmf?: unknown;
|
|
@@ -117,7 +117,7 @@ interface ParsedQueryParameters {
|
|
|
117
117
|
}
|
|
118
118
|
type ExecuteHandler<Request, Response> = (request: Request, response: Response) => Promise<void>;
|
|
119
119
|
interface FakePrismaClient {
|
|
120
|
-
$connect: () => void;
|
|
120
|
+
$connect: () => Promise<void> | void;
|
|
121
121
|
$disconnect: () => Promise<void>;
|
|
122
122
|
[key: string]: unknown;
|
|
123
123
|
_dmmf?: unknown;
|
|
@@ -117,7 +117,7 @@ interface ParsedQueryParameters {
|
|
|
117
117
|
}
|
|
118
118
|
type ExecuteHandler<Request, Response> = (request: Request, response: Response) => Promise<void>;
|
|
119
119
|
interface FakePrismaClient {
|
|
120
|
-
$connect: () => void;
|
|
120
|
+
$connect: () => Promise<void> | void;
|
|
121
121
|
$disconnect: () => Promise<void>;
|
|
122
122
|
[key: string]: unknown;
|
|
123
123
|
_dmmf?: unknown;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visulima/crud",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.17",
|
|
4
4
|
"description": "A comprehensive CRUD library for building RESTful APIs with Prisma, providing automatic CRUD operations, filtering, sorting, and pagination.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"anolilab",
|
|
@@ -75,8 +75,8 @@
|
|
|
75
75
|
"LICENSE.md"
|
|
76
76
|
],
|
|
77
77
|
"dependencies": {
|
|
78
|
-
"@visulima/pagination": "5.0.0-alpha.
|
|
79
|
-
"@visulima/prisma-dmmf-transformer": "3.0.0-alpha.
|
|
78
|
+
"@visulima/pagination": "5.0.0-alpha.13",
|
|
79
|
+
"@visulima/prisma-dmmf-transformer": "3.0.0-alpha.15",
|
|
80
80
|
"http-errors": "^2.0.1",
|
|
81
81
|
"path-to-regexp": "8.4.2"
|
|
82
82
|
},
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var k=Object.defineProperty;var a=(r,t)=>k(r,"name",{value:t,configurable:!0});const P=require("http-errors"),O=require("./models-to-route-names-Dh2b_kIL.cjs"),C=a(r=>r&&typeof r=="object"&&"default"in r?r.default:r,"_interopDefaultCompat"),p=C(P);var j=Object.defineProperty,M=a((r,t)=>j(r,"name",{value:t,configurable:!0}),"n$1");const D=new Set(["boolean","number","string"]),m=M(r=>D.has(typeof r),"isPrimitive");var E=Object.defineProperty,R=a((r,t)=>E(r,"name",{value:t,configurable:!0}),"s$1");const q=R(r=>{const t={};if(Object.keys(r).forEach(e=>{const s=r[e];m(s)&&(t[e]=s)}),Object.keys(t).length!==1)throw new Error("cursor needs to be an object with exactly 1 property with a primitive value");return t},"parsePrismaCursor");var K=Object.defineProperty,_=a((r,t)=>K(r,"name",{value:t,configurable:!0}),"a");const B={$asc:"asc",$desc:"desc"},N=_(r=>{const t={};return Object.keys(r).forEach(e=>{const s=r[e];t[e]=B[s]}),t},"parsePrismaOrderBy");var S=Object.defineProperty,Q=a((r,t)=>S(r,"name",{value:t,configurable:!0}),"u$1");const u=Q((r,t)=>{const e={};return Object.keys(r).forEach(s=>{e[s]=r[s]===!0?!0:{[t]:u(r[s],t)}}),e},"parsePrismaRecursiveField");var A=Object.defineProperty,n=a((r,t)=>A(r,"name",{value:t,configurable:!0}),"r");const c=n(r=>r instanceof Object,"isObject"),T={$cont:"contains",$ends:"endsWith",$eq:"equals",$gt:"gt",$gte:"gte",$in:"in",$lt:"lt",$lte:"lte",$neq:"not",$notin:"notIn",$starts:"startsWith"},F=n(r=>/^\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(r),"isDateString"),W=n(r=>F(r)?new Date(r):typeof r=="string"&&r==="$isnull"?null:r,"getSearchValue"),f=n((r,t)=>{const e=r.split(".");return e.splice(-1,1),t.includes(e.join("."))},"isRelation"),g=n(r=>{const t=Object.keys(r)[0],e=T[t];if(e)return{[e]:r[t]}},"parseSimpleField"),b=n((r,t,e,s)=>{const i=t.split(".").toReversed();let o={};i.forEach((h,v)=>{v===0?w(r,h,o,s):o={[h]:{some:o}}});const l=i.toReversed()[0],$=e[l];e[l]={some:{...$?.some,...o[l]?.some}}},"parseRelation"),d=n((r,t)=>{const e={};return Object.keys(r).forEach(s=>{const i=r[s];if(f(s,t))b(i,s,e,t);else if(m(i))e[s]=i;else if(c(i)){const o=g(i);o&&(e[s]=o)}}),e},"parseObjectCombination"),w=n((r,t,e,s)=>{if(m(r))e[t]=W(r);else switch(t){case"$and":{c(r)&&(e.AND=d(r,s));break}case"$not":{c(r)&&(e.NOT=d(r,s));break}case"$or":{c(r)&&(e.OR=d(r,s));break}default:{e[t]=g(r);break}}},"basicParse"),x=n((r,t)=>{const e={};return Object.keys(r).forEach(s=>{const i=r[s];f(s,t)?b(i,s,e,t):w(i,s,e,t)}),e},"parsePrismaWhere");var J=Object.defineProperty,y=a((r,t)=>J(r,"name",{value:t,configurable:!0}),"s");class V{static{a(this,"P")}static{y(this,"PrismaAdapter")}models;ctorModels;dmmf;manyRelations;primaryKey;prismaClient;constructor({manyRelations:t={},models:e,primaryKey:s="id",prismaClient:i}){this.prismaClient=i,this.primaryKey=s,this.manyRelations=t,this.ctorModels=e}async connect(){this.prismaClient.$connect()}async create(t,e,s){return await this.getPrismaDelegate(t).create({data:e,include:s.include,select:s.select})}async delete(t,e,s){return await this.getPrismaDelegate(t).delete({include:s.include,select:s.select,where:{[this.primaryKey]:e}})}async disconnect(){await this.prismaClient.$disconnect()}async getAll(t,e){return await this.getPrismaDelegate(t).findMany({cursor:e.cursor,distinct:e.distinct,include:e.include,orderBy:e.orderBy,select:e.select,skip:e.skip,take:e.take,where:e.where})}getModels(){return this.models??[]}async getOne(t,e,s){const i=this.getPrismaDelegate(t);return await(i.findUnique??i.findOne)({include:s.include,select:s.select,where:{[this.primaryKey]:e}})}async getPaginationData(t,e){const s=await this.getPrismaDelegate(t).count({distinct:e.distinct,where:e.where});return{page:Math.ceil((e.skip??0)/(e.take??0))+1,pageCount:Math.ceil(s/(e.take??0)),total:s}}handleError(t){throw console.error(t),t instanceof Error&&t.stack&&console.error(t.stack),t.constructor.name==="PrismaClientKnownRequestError"||t.constructor.name==="PrismaClientValidationError"?p(400,"invalid request, check your server logs for more info"):p(500,"an unknown error occured, check your server logs for more info")}async init(){const t=this.ctorModels,e=await this.getPrismaClientModels();t!==void 0&&t.forEach(s=>{if(!Object.keys(e).includes(s))throw new Error(`Model name ${s} is invalid.`)}),this.models=t??Object.keys(e)}async mapModelsToRouteNames(){return O.a(await this.getPrismaClientModels(),this.getModels())}parseQuery(t,e){const s={};return e.select&&(s.select=u(e.select,"select")),e.include&&(s.include=u(e.include,"include")),e.originalQuery?.where&&(s.where=x(JSON.parse(e.originalQuery.where),this.manyRelations[t]??[])),e.orderBy&&(s.orderBy=N(e.orderBy)),e.limit!==void 0&&(s.take=e.limit),e.skip!==void 0&&(s.skip=e.skip),e.originalQuery?.cursor&&(s.cursor=q(JSON.parse(e.originalQuery.cursor))),e.distinct&&(s.distinct=e.distinct),s}async update(t,e,s,i){return await this.getPrismaDelegate(t).update({data:s,include:i.include,select:i.select,where:{[this.primaryKey]:e}})}get client(){return this.prismaClient}getPrismaClientModels=y(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")},"getPrismaClientModels");getPrismaDelegate(t){return this.prismaClient[`${t.charAt(0).toLowerCase()}${t.slice(1)}`]}}module.exports=V;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var k=Object.defineProperty;var n=(r,t)=>k(r,"name",{value:t,configurable:!0});import p from"http-errors";import{a as P}from"./models-to-route-names-UU1lZmbK.mjs";var O=Object.defineProperty,C=n((r,t)=>O(r,"name",{value:t,configurable:!0}),"n$1");const j=new Set(["boolean","number","string"]),u=C(r=>j.has(typeof r),"isPrimitive");var M=Object.defineProperty,E=n((r,t)=>M(r,"name",{value:t,configurable:!0}),"s$1");const D=E(r=>{const t={};if(Object.keys(r).forEach(e=>{const s=r[e];u(s)&&(t[e]=s)}),Object.keys(t).length!==1)throw new Error("cursor needs to be an object with exactly 1 property with a primitive value");return t},"parsePrismaCursor");var R=Object.defineProperty,K=n((r,t)=>R(r,"name",{value:t,configurable:!0}),"a");const q={$asc:"asc",$desc:"desc"},B=K(r=>{const t={};return Object.keys(r).forEach(e=>{const s=r[e];t[e]=q[s]}),t},"parsePrismaOrderBy");var S=Object.defineProperty,N=n((r,t)=>S(r,"name",{value:t,configurable:!0}),"u$1");const m=N((r,t)=>{const e={};return Object.keys(r).forEach(s=>{e[s]=r[s]===!0?!0:{[t]:m(r[s],t)}}),e},"parsePrismaRecursiveField");var Q=Object.defineProperty,a=n((r,t)=>Q(r,"name",{value:t,configurable:!0}),"r");const c=a(r=>r instanceof Object,"isObject"),A={$cont:"contains",$ends:"endsWith",$eq:"equals",$gt:"gt",$gte:"gte",$in:"in",$lt:"lt",$lte:"lte",$neq:"not",$notin:"notIn",$starts:"startsWith"},_=a(r=>/^\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(r),"isDateString"),F=a(r=>_(r)?new Date(r):typeof r=="string"&&r==="$isnull"?null:r,"getSearchValue"),g=a((r,t)=>{const e=r.split(".");return e.splice(-1,1),t.includes(e.join("."))},"isRelation"),f=a(r=>{const t=Object.keys(r)[0],e=A[t];if(e)return{[e]:r[t]}},"parseSimpleField"),b=a((r,t,e,s)=>{const i=t.split(".").toReversed();let o={};i.forEach((h,v)=>{v===0?w(r,h,o,s):o={[h]:{some:o}}});const l=i.toReversed()[0],$=e[l];e[l]={some:{...$?.some,...o[l]?.some}}},"parseRelation"),d=a((r,t)=>{const e={};return Object.keys(r).forEach(s=>{const i=r[s];if(g(s,t))b(i,s,e,t);else if(u(i))e[s]=i;else if(c(i)){const o=f(i);o&&(e[s]=o)}}),e},"parseObjectCombination"),w=a((r,t,e,s)=>{if(u(r))e[t]=F(r);else switch(t){case"$and":{c(r)&&(e.AND=d(r,s));break}case"$not":{c(r)&&(e.NOT=d(r,s));break}case"$or":{c(r)&&(e.OR=d(r,s));break}default:{e[t]=f(r);break}}},"basicParse"),T=a((r,t)=>{const e={};return Object.keys(r).forEach(s=>{const i=r[s];g(s,t)?b(i,s,e,t):w(i,s,e,t)}),e},"parsePrismaWhere");var W=Object.defineProperty,y=n((r,t)=>W(r,"name",{value:t,configurable:!0}),"s");class I{static{n(this,"P")}static{y(this,"PrismaAdapter")}models;ctorModels;dmmf;manyRelations;primaryKey;prismaClient;constructor({manyRelations:t={},models:e,primaryKey:s="id",prismaClient:i}){this.prismaClient=i,this.primaryKey=s,this.manyRelations=t,this.ctorModels=e}async connect(){this.prismaClient.$connect()}async create(t,e,s){return await this.getPrismaDelegate(t).create({data:e,include:s.include,select:s.select})}async delete(t,e,s){return await this.getPrismaDelegate(t).delete({include:s.include,select:s.select,where:{[this.primaryKey]:e}})}async disconnect(){await this.prismaClient.$disconnect()}async getAll(t,e){return await this.getPrismaDelegate(t).findMany({cursor:e.cursor,distinct:e.distinct,include:e.include,orderBy:e.orderBy,select:e.select,skip:e.skip,take:e.take,where:e.where})}getModels(){return this.models??[]}async getOne(t,e,s){const i=this.getPrismaDelegate(t);return await(i.findUnique??i.findOne)({include:s.include,select:s.select,where:{[this.primaryKey]:e}})}async getPaginationData(t,e){const s=await this.getPrismaDelegate(t).count({distinct:e.distinct,where:e.where});return{page:Math.ceil((e.skip??0)/(e.take??0))+1,pageCount:Math.ceil(s/(e.take??0)),total:s}}handleError(t){throw console.error(t),t instanceof Error&&t.stack&&console.error(t.stack),t.constructor.name==="PrismaClientKnownRequestError"||t.constructor.name==="PrismaClientValidationError"?p(400,"invalid request, check your server logs for more info"):p(500,"an unknown error occured, check your server logs for more info")}async init(){const t=this.ctorModels,e=await this.getPrismaClientModels();t!==void 0&&t.forEach(s=>{if(!Object.keys(e).includes(s))throw new Error(`Model name ${s} is invalid.`)}),this.models=t??Object.keys(e)}async mapModelsToRouteNames(){return P(await this.getPrismaClientModels(),this.getModels())}parseQuery(t,e){const s={};return e.select&&(s.select=m(e.select,"select")),e.include&&(s.include=m(e.include,"include")),e.originalQuery?.where&&(s.where=T(JSON.parse(e.originalQuery.where),this.manyRelations[t]??[])),e.orderBy&&(s.orderBy=B(e.orderBy)),e.limit!==void 0&&(s.take=e.limit),e.skip!==void 0&&(s.skip=e.skip),e.originalQuery?.cursor&&(s.cursor=D(JSON.parse(e.originalQuery.cursor))),e.distinct&&(s.distinct=e.distinct),s}async update(t,e,s,i){return await this.getPrismaDelegate(t).update({data:s,include:i.include,select:i.select,where:{[this.primaryKey]:e}})}get client(){return this.prismaClient}getPrismaClientModels=y(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")},"getPrismaClientModels");getPrismaDelegate(t){return this.prismaClient[`${t.charAt(0).toLowerCase()}${t.slice(1)}`]}}export{I as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var U=Object.defineProperty;var u=(e,t)=>U(e,"name",{value:t,configurable:!0});const H=require("http-errors"),I=require("next/dist/server/api-utils/index.js"),M=require("@visulima/pagination"),B=require("node:url"),f=require("./RouteType-DLV_OhhD.cjs"),Q=require("./get-accessible-routes-DLLL11KB.cjs"),j=require("path-to-regexp"),G=u(e=>e&&typeof e=="object"&&"default"in e?e.default:e,"_interopDefaultCompat"),y=G(H);var J=Object.defineProperty,K=u((e,t)=>J(e,"name",{value:t,configurable:!0}),"t");const z=K(async({adapter:e,query:t,request:r,resourceName:n})=>({data:await e.create(n,r.body,t),status:201}),"createHandler");var X=Object.defineProperty,W=u((e,t)=>X(e,"name",{value:t,configurable:!0}),"r$2");const V=W(async({adapter:e,query:t,resourceId:r,resourceName:n})=>{if(typeof await e.getOne(n,r,t)=="object")return{data:await e.delete(n,r,t),status:200};throw y(404,`${n} ${String(r)} not found`)},"deleteHandler");var Y=Object.defineProperty,Z=u((e,t)=>Y(e,"name",{value:t,configurable:!0}),"o$1");const ee=Z(async({adapter:e,pagination:t,query:r,resourceName:n})=>{let a=!1,i;if(r.page!==void 0){if(r.page<=0)throw new Error("page query must be a strictly positive number");i={page:r.page,perPage:r.limit??t.perPage}}i&&(a=!0,r.skip=(i.page-1)*i.perPage,r.limit=i.perPage);const o=await e.getAll(n,r);if(a){const{page:s,total:l}=await e.getPaginationData(n,r);return{data:M.paginate(s,i.perPage,l,o).toJSON(),status:200}}return{data:o,status:200}},"listHandler");var te=Object.defineProperty,re=u((e,t)=>te(e,"name",{value:t,configurable:!0}),"n$1");const ne=re(async({adapter:e,query:t,resourceId:r,resourceName:n})=>{const a=await e.getOne(n,r,t);if(typeof a!="object")throw y(404,`${n} ${String(r)} not found`);return{data:a,status:200}},"readHandler");var ae=Object.defineProperty,oe=u((e,t)=>ae(e,"name",{value:t,configurable:!0}),"d$3");const ie=oe(async({adapter:e,query:t,request:r,resourceId:n,resourceName:a})=>{if(typeof await e.getOne(a,n,t)=="object")return{data:await e.update(a,n,r.body,t),status:201};throw y(404,`${a} ${String(n)} not found`)},"updateHandler");var se=Object.defineProperty,c=u((e,t)=>se(e,"name",{value:t,configurable:!0}),"f");const d=c(e=>{const t=typeof e;return e!==null&&(t==="object"||t==="function")},"isObject"),ue=c(e=>{if(!d(e))return!1;for(const t in e)if(Object.hasOwn(e,t))return!1;return!0},"isEmptyObject"),q=new Set(["__proto__","prototype","constructor"]),S=1e6,ce=c(e=>e>="0"&&e<="9","isDigit");function h(e){if(e==="0")return!0;if(/^[1-9]\d*$/.test(e)){const t=Number.parseInt(e,10);return t<=Number.MAX_SAFE_INTEGER&&t<=S}return!1}u(h,"p$1");c(h,"shouldCoerceToNumber");function b(e,t){return q.has(e)?!1:(e&&h(e)?t.push(Number.parseInt(e,10)):t.push(e),!0)}u(b,"y");c(b,"processSegment");function _(e){if(typeof e!="string")throw new TypeError(`Expected a string, got ${typeof e}`);const t=[];let r="",n="start",a=!1,i=0;for(const o of e){if(i++,a){r+=o,a=!1;continue}if(o==="\\"){if(n==="index")throw new Error(`Invalid character '${o}' in an index at position ${i}`);if(n==="indexEnd")throw new Error(`Invalid character '${o}' after an index at position ${i}`);a=!0,n=n==="start"?"property":n;continue}switch(o){case".":{if(n==="index")throw new Error(`Invalid character '${o}' in an index at position ${i}`);if(n==="indexEnd"){n="property";break}if(!b(r,t))return[];r="",n="property";break}case"[":{if(n==="index")throw new Error(`Invalid character '${o}' in an index at position ${i}`);if(n==="indexEnd"){n="index";break}if(n==="property"||n==="start"){if((r||n==="property")&&!b(r,t))return[];r=""}n="index";break}case"]":{if(n==="index"){if(r==="")r=(t.pop()||"")+"[]",n="property";else{const s=Number.parseInt(r,10);!Number.isNaN(s)&&Number.isFinite(s)&&s>=0&&s<=Number.MAX_SAFE_INTEGER&&s<=S&&r===String(s)?t.push(s):t.push(r),r="",n="indexEnd"}break}if(n==="indexEnd")throw new Error(`Invalid character '${o}' after an index at position ${i}`);r+=o;break}default:{if(n==="index"&&!ce(o))throw new Error(`Invalid character '${o}' in an index at position ${i}`);if(n==="indexEnd")throw new Error(`Invalid character '${o}' after an index at position ${i}`);n==="start"&&(n="property"),r+=o}}}switch(a&&(r+="\\"),n){case"property":{if(!b(r,t))return[];break}case"index":throw new Error("Index was not closed");case"start":{t.push("");break}}return t}u(_,"parsePath");c(_,"parsePath");function m(e){if(typeof e=="string")return _(e);if(Array.isArray(e)){const t=[];for(const[r,n]of e.entries()){if(typeof n!="string"&&typeof n!="number")throw new TypeError(`Expected a string or number for path segment at index ${r}, got ${typeof n}`);if(typeof n=="number"&&!Number.isFinite(n))throw new TypeError(`Path segment at index ${r} must be a finite number, got ${n}`);if(q.has(n))return[];typeof n=="string"&&h(n)?t.push(Number.parseInt(n,10)):t.push(n)}return t}return[]}u(m,"d$2");c(m,"normalizePath");function pe(e,t,r){if(!d(e)||typeof t!="string"&&!Array.isArray(t))return r===void 0?e:r;const n=m(t);if(n.length===0)return r;for(let a=0;a<n.length;a++){const i=n[a];if(e=e[i],e==null){if(a!==n.length-1)return r;break}}return e===void 0?r:e}u(pe,"getProperty");c(pe,"getProperty");function $(e,t,r){if(!d(e)||typeof t!="string"&&!Array.isArray(t))return e;const n=e,a=m(t);if(a.length===0)return e;for(let i=0;i<a.length;i++){const o=a[i];if(i===a.length-1)e[o]=r;else if(!d(e[o])){const s=typeof a[i+1]=="number";e[o]=s?[]:{}}e=e[o]}return n}u($,"setProperty");c($,"setProperty");function fe(e,t){if(!d(e)||typeof t!="string"&&!Array.isArray(t))return!1;const r=m(t);if(r.length===0)return!1;for(let n=0;n<r.length;n++){const a=r[n];if(n===r.length-1)return Object.hasOwn(e,a)?(delete e[a],!0):!1;if(e=e[a],!d(e))return!1}}u(fe,"deleteProperty");c(fe,"deleteProperty");function de(e,t){if(!d(e)||typeof t!="string"&&!Array.isArray(t))return!1;const r=m(t);if(r.length===0)return!1;for(const n of r){if(!d(e)||!(n in e))return!1;e=e[n]}return!0}u(de,"hasProperty");c(de,"hasProperty");function x(e){if(typeof e!="string")throw new TypeError(`Expected a string, got ${typeof e}`);return e.replaceAll(/[\\.[]/g,String.raw`\$&`)}u(x,"escapePath");c(x,"escapePath");function C(e){const t=Object.entries(e);return Array.isArray(e)?t.map(([r,n])=>[h(r)?Number.parseInt(r,10):r,n]):t}u(C,"m");c(C,"normalizeEntries");function D(e,t={}){if(!Array.isArray(e))throw new TypeError(`Expected an array, got ${typeof e}`);const{preferDotForIndices:r=!1}=t,n=[];for(const[a,i]of e.entries()){if(typeof i!="string"&&typeof i!="number")throw new TypeError(`Expected a string or number for path segment at index ${a}, got ${typeof i}`);if(typeof i=="number")if(!Number.isInteger(i)||i<0){const o=x(String(i));n.push(a===0?o:`.${o}`)}else r&&a>0?n.push(`.${i}`):n.push(`[${i}]`);else if(typeof i=="string")if(i==="")a===0||n.push(".");else if(h(i)){const o=Number.parseInt(i,10);r&&a>0?n.push(`.${o}`):n.push(`[${o}]`)}else{const o=x(i);n.push(a===0?o:`.${o}`)}}return n.join("")}u(D,"stringifyPath");c(D,"stringifyPath");function*A(e,t=[],r=new Set){if(!d(e)||ue(e)){t.length>0&&(yield D(t));return}if(!r.has(e)){r.add(e);for(const[n,a]of C(e))t.push(n),yield*A(a,t,r),t.pop();r.delete(e)}}u(A,"x");c(A,"deepKeysIterator");function le(e){return[...A(e)]}u(le,"deepKeys");c(le,"deepKeys");function ye(e){const t={};if(!d(e))return t;for(const[r,n]of Object.entries(e))$(t,r,n);return t}u(ye,"unflatten");c(ye,"unflatten");var ge=Object.defineProperty,w=u((e,t)=>ge(e,"name",{value:t,configurable:!0}),"i$1");const k=w(e=>{const t={};return e.split(",").forEach(r=>{$(t,r,!0)}),t},"parseRecursive"),he=w(e=>{const t=JSON.parse(e),r={};return Object.keys(t).forEach(n=>{$(r,n,t[n])}),r},"parseWhere"),me=w(e=>{const t={},r=JSON.parse(e);if(Object.keys(r).length>0){const n=Object.keys(r)[0];(r[n]==="$asc"||r[n]==="$desc")&&(t[n]=r[n])}if(Object.keys(t).length!==1)throw new Error("orderBy needs to be an object with exactly 1 property with either $asc or $desc value");return t},"parseOrderBy"),be=w(e=>{if(e){const{searchParams:t}=new B.URL(e),r={};return t.get("select")&&(r.select=k(t.get("select"))),t.get("include")&&(r.include=k(t.get("include"))),t.get("where")&&(r.where=he(t.get("where"))),t.get("orderBy")&&(r.orderBy=me(t.get("orderBy"))),t.has("limit")&&(r.limit=Number.isFinite(+t.get("limit"))?+t.get("limit"):void 0),t.has("skip")&&(r.skip=Number.isFinite(+t.get("skip"))?+t.get("skip"):void 0),t.get("distinct")&&(r.distinct=t.get("distinct")),t.get("page")&&(r.page=Number.isFinite(+t.get("page"))?+t.get("page"):void 0),{originalQuery:Object.fromEntries(t.entries()),...r}}return{}},"parseQuery");var $e=Object.defineProperty,we=u((e,t)=>$e(e,"name",{value:t,configurable:!0}),"e");const Ee=we(e=>Number.isSafeInteger(+e)?+e:e,"formatResourceId");var ve=Object.defineProperty,F=u((e,t)=>ve(e,"name",{value:t,configurable:!0}),"s");const Pe=F(e=>`${e.charAt(0).toLowerCase()}${e.slice(1)}`,"ensureCamelCase"),Te=F((e,t)=>{const r=e.split("?")[0];if(r===void 0)throw new TypeError("Path is undefined");const n=Object.keys(t).find(a=>{const i=t[a],o=Pe(i);return new RegExp(`(${i}|${o}$)|(${i}|${o}/)`,"g").test(r)});if(n===void 0)throw new Error(`Couldn't find model name for url ${e}`);return{modelName:n,resourceName:t[n]}},"getResourceNameFromUrl");var Ne=Object.defineProperty,xe=u((e,t)=>Ne(e,"name",{value:t,configurable:!0}),"u");const Ae=xe((e,t,r)=>{const n=t.split("?")[0];if(n===void 0)throw new TypeError("Path is undefined");if(!n.includes(`/${r}`))throw new Error(`invalid resource name '${r}' for route '${n}'`);const a=j.match(`/*placeholder/${r}{/:id}`,{decode:decodeURIComponent}),i=j.match(`/*placeholder/${r}`,{decode:decodeURIComponent});switch(e){case"DELETE":{const o=a(n);return typeof o=="object"&&o.params.id?{resourceId:o.params.id,routeType:f.RouteType.DELETE}:{routeType:null}}case"GET":{const o=a(n);return typeof o=="object"&&o.params.id?{resourceId:o.params.id,routeType:f.RouteType.READ_ONE}:{routeType:f.RouteType.READ_ALL}}case"PATCH":case"PUT":{const o=a(n);return typeof o=="object"&&o.params.id?{resourceId:o.params.id,routeType:f.RouteType.UPDATE}:{routeType:null}}case"POST":return i(n)?{routeType:f.RouteType.CREATE}:{routeType:null};default:return{routeType:null}}},"getRouteType");var Re=Object.defineProperty,Oe=u((e,t)=>Re(e,"name",{value:t,configurable:!0}),"a");const Ie=["create","delete","getAll","getOne","parseQuery","update","getPaginationData","getModels"],je=Oe(e=>{Ie.forEach(t=>{if(!e[t])throw y(500,`Adapter must implement the "${t}" method.`)})},"validateAdapterMethods");var ke=Object.defineProperty,qe=u((e,t)=>ke(e,"name",{value:t,configurable:!0}),"h");const Se=/\/$/u;async function L(e,t,r,n){try{je(r)}catch(s){const l=s;throw new I.ApiError(l.statusCode,l.message)}await r.init?.();const a={formatResourceId:Ee,pagination:{perPage:20},...n},i=await r.mapModelsToRouteNames?.(),o={};return r.getModels().forEach(s=>{o[s]=a.models?.[s]?.name??i?.[s]??s}),async(s,l)=>{const{modelName:E,resourceName:R}=Te(s.url,o);if(!R)throw y(404,`Resource not found: ${s.url}`);const{resourceId:O,routeType:v}=Ae(s.method,s.url,R);if(v===null)throw y(404,`Route not found: ${s.url}`);const P=n?.models?.[E];if(!Q.E(P?.only,P?.exclude,n?.exposeStrategy??"all").includes(v))throw y(404,`Route not found: ${s.url}`);try{const T=P?.formatResourceId?.(O)??a.formatResourceId(O);await r.connect?.();const N=be(`https://${s.headers.host?.replace(Se,"")??""}/${s.url}`),g={adapter:r,query:r.parseQuery(E,N),resourceName:E};try{let p;switch(v){case f.RouteType.CREATE:{p=await(a.handlers?.create??z)({...g,request:s});break}case f.RouteType.DELETE:{p=await(a.handlers?.delete??V)({...g,resourceId:T});break}case f.RouteType.READ_ALL:{p=await(a.handlers?.list??ee)({...g,pagination:a.pagination,query:{...g.query,limit:N.limit??void 0,page:N.page??void 0}});break}case f.RouteType.READ_ONE:{p=await(a.handlers?.get??ne)({...g,resourceId:T});break}case f.RouteType.UPDATE:{p=await(a.handlers?.update??ie)({...g,request:s,resourceId:T});break}default:p={data:"Method not found",status:404}}await e(l,p)}catch(p){if(r.handleError&&!(p instanceof I.ApiError))r.handleError(p);else throw p}}finally{await r.disconnect?.(),await t(l)}}}u(L,"N");qe(L,"baseHandler");exports.N=L;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var M=Object.defineProperty;var u=(e,r)=>M(e,"name",{value:r,configurable:!0});import{createRequire as U}from"node:module";import y from"http-errors";import{ApiError as R}from"next/dist/server/api-utils/index.js";import{paginate as Q}from"@visulima/pagination";import{RouteType as f}from"./RouteType-BQ2RxFPE.mjs";import{E as J}from"./get-accessible-routes-xHYBQ_6q.mjs";import{match as k}from"path-to-regexp";const B=U(import.meta.url),h=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,H=u(e=>{if(typeof h<"u"&&h.versions&&h.versions.node){const[r,t]=h.versions.node.split(".").map(Number);if(r>22||r===22&&t>=3||r===20&&t>=16)return h.getBuiltinModule(e)}return B(e)},"__cjs_getBuiltinModule"),{URL:G}=H("node:url");var K=Object.defineProperty,z=u((e,r)=>K(e,"name",{value:r,configurable:!0}),"t");const X=z(async({adapter:e,query:r,request:t,resourceName:n})=>({data:await e.create(n,t.body,r),status:201}),"createHandler");var W=Object.defineProperty,V=u((e,r)=>W(e,"name",{value:r,configurable:!0}),"r$2");const Y=V(async({adapter:e,query:r,resourceId:t,resourceName:n})=>{if(typeof await e.getOne(n,t,r)=="object")return{data:await e.delete(n,t,r),status:200};throw y(404,`${n} ${String(t)} not found`)},"deleteHandler");var Z=Object.defineProperty,ee=u((e,r)=>Z(e,"name",{value:r,configurable:!0}),"o$1");const re=ee(async({adapter:e,pagination:r,query:t,resourceName:n})=>{let a=!1,i;if(t.page!==void 0){if(t.page<=0)throw new Error("page query must be a strictly positive number");i={page:t.page,perPage:t.limit??r.perPage}}i&&(a=!0,t.skip=(i.page-1)*i.perPage,t.limit=i.perPage);const o=await e.getAll(n,t);if(a){const{page:s,total:l}=await e.getPaginationData(n,t);return{data:Q(s,i.perPage,l,o).toJSON(),status:200}}return{data:o,status:200}},"listHandler");var te=Object.defineProperty,ne=u((e,r)=>te(e,"name",{value:r,configurable:!0}),"n$1");const ae=ne(async({adapter:e,query:r,resourceId:t,resourceName:n})=>{const a=await e.getOne(n,t,r);if(typeof a!="object")throw y(404,`${n} ${String(t)} not found`);return{data:a,status:200}},"readHandler");var oe=Object.defineProperty,ie=u((e,r)=>oe(e,"name",{value:r,configurable:!0}),"d$3");const se=ie(async({adapter:e,query:r,request:t,resourceId:n,resourceName:a})=>{if(typeof await e.getOne(a,n,r)=="object")return{data:await e.update(a,n,t.body,r),status:201};throw y(404,`${a} ${String(n)} not found`)},"updateHandler");var ue=Object.defineProperty,c=u((e,r)=>ue(e,"name",{value:r,configurable:!0}),"f");const d=c(e=>{const r=typeof e;return e!==null&&(r==="object"||r==="function")},"isObject"),ce=c(e=>{if(!d(e))return!1;for(const r in e)if(Object.hasOwn(e,r))return!1;return!0},"isEmptyObject"),S=new Set(["__proto__","prototype","constructor"]),q=1e6,pe=c(e=>e>="0"&&e<="9","isDigit");function m(e){if(e==="0")return!0;if(/^[1-9]\d*$/.test(e)){const r=Number.parseInt(e,10);return r<=Number.MAX_SAFE_INTEGER&&r<=q}return!1}u(m,"p$1");c(m,"shouldCoerceToNumber");function $(e,r){return S.has(e)?!1:(e&&m(e)?r.push(Number.parseInt(e,10)):r.push(e),!0)}u($,"y");c($,"processSegment");function C(e){if(typeof e!="string")throw new TypeError(`Expected a string, got ${typeof e}`);const r=[];let t="",n="start",a=!1,i=0;for(const o of e){if(i++,a){t+=o,a=!1;continue}if(o==="\\"){if(n==="index")throw new Error(`Invalid character '${o}' in an index at position ${i}`);if(n==="indexEnd")throw new Error(`Invalid character '${o}' after an index at position ${i}`);a=!0,n=n==="start"?"property":n;continue}switch(o){case".":{if(n==="index")throw new Error(`Invalid character '${o}' in an index at position ${i}`);if(n==="indexEnd"){n="property";break}if(!$(t,r))return[];t="",n="property";break}case"[":{if(n==="index")throw new Error(`Invalid character '${o}' in an index at position ${i}`);if(n==="indexEnd"){n="index";break}if(n==="property"||n==="start"){if((t||n==="property")&&!$(t,r))return[];t=""}n="index";break}case"]":{if(n==="index"){if(t==="")t=(r.pop()||"")+"[]",n="property";else{const s=Number.parseInt(t,10);!Number.isNaN(s)&&Number.isFinite(s)&&s>=0&&s<=Number.MAX_SAFE_INTEGER&&s<=q&&t===String(s)?r.push(s):r.push(t),t="",n="indexEnd"}break}if(n==="indexEnd")throw new Error(`Invalid character '${o}' after an index at position ${i}`);t+=o;break}default:{if(n==="index"&&!pe(o))throw new Error(`Invalid character '${o}' in an index at position ${i}`);if(n==="indexEnd")throw new Error(`Invalid character '${o}' after an index at position ${i}`);n==="start"&&(n="property"),t+=o}}}switch(a&&(t+="\\"),n){case"property":{if(!$(t,r))return[];break}case"index":throw new Error("Index was not closed");case"start":{r.push("");break}}return r}u(C,"parsePath");c(C,"parsePath");function b(e){if(typeof e=="string")return C(e);if(Array.isArray(e)){const r=[];for(const[t,n]of e.entries()){if(typeof n!="string"&&typeof n!="number")throw new TypeError(`Expected a string or number for path segment at index ${t}, got ${typeof n}`);if(typeof n=="number"&&!Number.isFinite(n))throw new TypeError(`Path segment at index ${t} must be a finite number, got ${n}`);if(S.has(n))return[];typeof n=="string"&&m(n)?r.push(Number.parseInt(n,10)):r.push(n)}return r}return[]}u(b,"d$2");c(b,"normalizePath");function fe(e,r,t){if(!d(e)||typeof r!="string"&&!Array.isArray(r))return t===void 0?e:t;const n=b(r);if(n.length===0)return t;for(let a=0;a<n.length;a++){const i=n[a];if(e=e[i],e==null){if(a!==n.length-1)return t;break}}return e===void 0?t:e}u(fe,"getProperty");c(fe,"getProperty");function w(e,r,t){if(!d(e)||typeof r!="string"&&!Array.isArray(r))return e;const n=e,a=b(r);if(a.length===0)return e;for(let i=0;i<a.length;i++){const o=a[i];if(i===a.length-1)e[o]=t;else if(!d(e[o])){const s=typeof a[i+1]=="number";e[o]=s?[]:{}}e=e[o]}return n}u(w,"setProperty");c(w,"setProperty");function de(e,r){if(!d(e)||typeof r!="string"&&!Array.isArray(r))return!1;const t=b(r);if(t.length===0)return!1;for(let n=0;n<t.length;n++){const a=t[n];if(n===t.length-1)return Object.hasOwn(e,a)?(delete e[a],!0):!1;if(e=e[a],!d(e))return!1}}u(de,"deleteProperty");c(de,"deleteProperty");function le(e,r){if(!d(e)||typeof r!="string"&&!Array.isArray(r))return!1;const t=b(r);if(t.length===0)return!1;for(const n of t){if(!d(e)||!(n in e))return!1;e=e[n]}return!0}u(le,"hasProperty");c(le,"hasProperty");function x(e){if(typeof e!="string")throw new TypeError(`Expected a string, got ${typeof e}`);return e.replaceAll(/[\\.[]/g,String.raw`\$&`)}u(x,"escapePath");c(x,"escapePath");function D(e){const r=Object.entries(e);return Array.isArray(e)?r.map(([t,n])=>[m(t)?Number.parseInt(t,10):t,n]):r}u(D,"m");c(D,"normalizeEntries");function F(e,r={}){if(!Array.isArray(e))throw new TypeError(`Expected an array, got ${typeof e}`);const{preferDotForIndices:t=!1}=r,n=[];for(const[a,i]of e.entries()){if(typeof i!="string"&&typeof i!="number")throw new TypeError(`Expected a string or number for path segment at index ${a}, got ${typeof i}`);if(typeof i=="number")if(!Number.isInteger(i)||i<0){const o=x(String(i));n.push(a===0?o:`.${o}`)}else t&&a>0?n.push(`.${i}`):n.push(`[${i}]`);else if(typeof i=="string")if(i==="")a===0||n.push(".");else if(m(i)){const o=Number.parseInt(i,10);t&&a>0?n.push(`.${o}`):n.push(`[${o}]`)}else{const o=x(i);n.push(a===0?o:`.${o}`)}}return n.join("")}u(F,"stringifyPath");c(F,"stringifyPath");function*O(e,r=[],t=new Set){if(!d(e)||ce(e)){r.length>0&&(yield F(r));return}if(!t.has(e)){t.add(e);for(const[n,a]of D(e))r.push(n),yield*O(a,r,t),r.pop();t.delete(e)}}u(O,"x");c(O,"deepKeysIterator");function ye(e){return[...O(e)]}u(ye,"deepKeys");c(ye,"deepKeys");function ge(e){const r={};if(!d(e))return r;for(const[t,n]of Object.entries(e))w(r,t,n);return r}u(ge,"unflatten");c(ge,"unflatten");var he=Object.defineProperty,E=u((e,r)=>he(e,"name",{value:r,configurable:!0}),"i$1");const _=E(e=>{const r={};return e.split(",").forEach(t=>{w(r,t,!0)}),r},"parseRecursive"),me=E(e=>{const r=JSON.parse(e),t={};return Object.keys(r).forEach(n=>{w(t,n,r[n])}),t},"parseWhere"),be=E(e=>{const r={},t=JSON.parse(e);if(Object.keys(t).length>0){const n=Object.keys(t)[0];(t[n]==="$asc"||t[n]==="$desc")&&(r[n]=t[n])}if(Object.keys(r).length!==1)throw new Error("orderBy needs to be an object with exactly 1 property with either $asc or $desc value");return r},"parseOrderBy"),$e=E(e=>{if(e){const{searchParams:r}=new G(e),t={};return r.get("select")&&(t.select=_(r.get("select"))),r.get("include")&&(t.include=_(r.get("include"))),r.get("where")&&(t.where=me(r.get("where"))),r.get("orderBy")&&(t.orderBy=be(r.get("orderBy"))),r.has("limit")&&(t.limit=Number.isFinite(+r.get("limit"))?+r.get("limit"):void 0),r.has("skip")&&(t.skip=Number.isFinite(+r.get("skip"))?+r.get("skip"):void 0),r.get("distinct")&&(t.distinct=r.get("distinct")),r.get("page")&&(t.page=Number.isFinite(+r.get("page"))?+r.get("page"):void 0),{originalQuery:Object.fromEntries(r.entries()),...t}}return{}},"parseQuery");var we=Object.defineProperty,Ee=u((e,r)=>we(e,"name",{value:r,configurable:!0}),"e");const ve=Ee(e=>Number.isSafeInteger(+e)?+e:e,"formatResourceId");var Pe=Object.defineProperty,L=u((e,r)=>Pe(e,"name",{value:r,configurable:!0}),"s");const Ne=L(e=>`${e.charAt(0).toLowerCase()}${e.slice(1)}`,"ensureCamelCase"),je=L((e,r)=>{const t=e.split("?")[0];if(t===void 0)throw new TypeError("Path is undefined");const n=Object.keys(r).find(a=>{const i=r[a],o=Ne(i);return new RegExp(`(${i}|${o}$)|(${i}|${o}/)`,"g").test(t)});if(n===void 0)throw new Error(`Couldn't find model name for url ${e}`);return{modelName:n,resourceName:r[n]}},"getResourceNameFromUrl");var Te=Object.defineProperty,xe=u((e,r)=>Te(e,"name",{value:r,configurable:!0}),"u");const Oe=xe((e,r,t)=>{const n=r.split("?")[0];if(n===void 0)throw new TypeError("Path is undefined");if(!n.includes(`/${t}`))throw new Error(`invalid resource name '${t}' for route '${n}'`);const a=k(`/*placeholder/${t}{/:id}`,{decode:decodeURIComponent}),i=k(`/*placeholder/${t}`,{decode:decodeURIComponent});switch(e){case"DELETE":{const o=a(n);return typeof o=="object"&&o.params.id?{resourceId:o.params.id,routeType:f.DELETE}:{routeType:null}}case"GET":{const o=a(n);return typeof o=="object"&&o.params.id?{resourceId:o.params.id,routeType:f.READ_ONE}:{routeType:f.READ_ALL}}case"PATCH":case"PUT":{const o=a(n);return typeof o=="object"&&o.params.id?{resourceId:o.params.id,routeType:f.UPDATE}:{routeType:null}}case"POST":return i(n)?{routeType:f.CREATE}:{routeType:null};default:return{routeType:null}}},"getRouteType");var Ae=Object.defineProperty,Ie=u((e,r)=>Ae(e,"name",{value:r,configurable:!0}),"a");const Re=["create","delete","getAll","getOne","parseQuery","update","getPaginationData","getModels"],ke=Ie(e=>{Re.forEach(r=>{if(!e[r])throw y(500,`Adapter must implement the "${r}" method.`)})},"validateAdapterMethods");var _e=Object.defineProperty,Se=u((e,r)=>_e(e,"name",{value:r,configurable:!0}),"h");const qe=/\/$/u;async function Ce(e,r,t,n){try{ke(t)}catch(s){const l=s;throw new R(l.statusCode,l.message)}await t.init?.();const a={formatResourceId:ve,pagination:{perPage:20},...n},i=await t.mapModelsToRouteNames?.(),o={};return t.getModels().forEach(s=>{o[s]=a.models?.[s]?.name??i?.[s]??s}),async(s,l)=>{const{modelName:v,resourceName:A}=je(s.url,o);if(!A)throw y(404,`Resource not found: ${s.url}`);const{resourceId:I,routeType:P}=Oe(s.method,s.url,A);if(P===null)throw y(404,`Route not found: ${s.url}`);const N=n?.models?.[v];if(!J(N?.only,N?.exclude,n?.exposeStrategy??"all").includes(P))throw y(404,`Route not found: ${s.url}`);try{const j=N?.formatResourceId?.(I)??a.formatResourceId(I);await t.connect?.();const T=$e(`https://${s.headers.host?.replace(qe,"")??""}/${s.url}`),g={adapter:t,query:t.parseQuery(v,T),resourceName:v};try{let p;switch(P){case f.CREATE:{p=await(a.handlers?.create??X)({...g,request:s});break}case f.DELETE:{p=await(a.handlers?.delete??Y)({...g,resourceId:j});break}case f.READ_ALL:{p=await(a.handlers?.list??re)({...g,pagination:a.pagination,query:{...g.query,limit:T.limit??void 0,page:T.page??void 0}});break}case f.READ_ONE:{p=await(a.handlers?.get??ae)({...g,resourceId:j});break}case f.UPDATE:{p=await(a.handlers?.update??se)({...g,request:s,resourceId:j});break}default:p={data:"Method not found",status:404}}await e(l,p)}catch(p){if(t.handleError&&!(p instanceof R))t.handleError(p);else throw p}}finally{await t.disconnect?.(),await r(l)}}}u(Ce,"N");Se(Ce,"baseHandler");export{Ce as N};
|