peta-orm 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +280 -0
- package/dist/builder/delete-builder.d.ts +9 -0
- package/dist/builder/delete-builder.d.ts.map +1 -0
- package/dist/builder/eager-loader.d.ts +13 -0
- package/dist/builder/eager-loader.d.ts.map +1 -0
- package/dist/builder/index.d.ts +8 -0
- package/dist/builder/index.d.ts.map +1 -0
- package/dist/builder/insert-builder.d.ts +9 -0
- package/dist/builder/insert-builder.d.ts.map +1 -0
- package/dist/builder/query-builder.d.ts +61 -0
- package/dist/builder/query-builder.d.ts.map +1 -0
- package/dist/builder/update-builder.d.ts +9 -0
- package/dist/builder/update-builder.d.ts.map +1 -0
- package/dist/collection/collection.d.ts +48 -0
- package/dist/collection/collection.d.ts.map +1 -0
- package/dist/columns/arktype-config.d.ts +12 -0
- package/dist/columns/arktype-config.d.ts.map +1 -0
- package/dist/columns/column-types.d.ts +27 -0
- package/dist/columns/column-types.d.ts.map +1 -0
- package/dist/columns/column.d.ts +30 -0
- package/dist/columns/column.d.ts.map +1 -0
- package/dist/columns/schema-config.d.ts +10 -0
- package/dist/columns/schema-config.d.ts.map +1 -0
- package/dist/errors/errors.d.ts +17 -0
- package/dist/errors/errors.d.ts.map +1 -0
- package/dist/hooks/lifecycle.d.ts +11 -0
- package/dist/hooks/lifecycle.d.ts.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17978 -0
- package/dist/integrations/elysia.d.ts +12 -0
- package/dist/integrations/elysia.d.ts.map +1 -0
- package/dist/integrations/hono.d.ts +7 -0
- package/dist/integrations/hono.d.ts.map +1 -0
- package/dist/model/model.d.ts +83 -0
- package/dist/model/model.d.ts.map +1 -0
- package/dist/pagination/paginator.d.ts +30 -0
- package/dist/pagination/paginator.d.ts.map +1 -0
- package/dist/peta.d.ts +18 -0
- package/dist/peta.d.ts.map +1 -0
- package/dist/relations/morph.d.ts +43 -0
- package/dist/relations/morph.d.ts.map +1 -0
- package/dist/relations/relation.d.ts +84 -0
- package/dist/relations/relation.d.ts.map +1 -0
- package/dist/types.d.ts +17 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +47 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 zfadhli
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
# Peta ORM
|
|
2
|
+
|
|
3
|
+
**Typed ORM for Bun, built on [Kysely](https://github.com/kysely-org/kysely)** with [ArkType](https://arktype.io) validation.
|
|
4
|
+
|
|
5
|
+
Column types, relations with eager loading, lifecycle hooks, timestamps, soft deletes, casting, serialization control, global scopes, polymorphic relations, and more — all fully typed end-to-end.
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
const user = await User.insert({ name: "Alice", email: "a@b.com" })
|
|
9
|
+
const posts = await user.$relatedQuery("posts").where("published", true).execute()
|
|
10
|
+
const page = await Post.query().with("author").paginate(1, 20)
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Quick Start
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
bun add peta-orm arktype kysely
|
|
19
|
+
bun add -d kysely-bun-sqlite
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
```ts
|
|
23
|
+
// db.ts
|
|
24
|
+
import { Database } from "bun:sqlite"
|
|
25
|
+
import { BunSqliteDialect } from "kysely-bun-sqlite"
|
|
26
|
+
import { Peta, $t, ArkTypeSchemaConfig, Model, HasMany } from "peta-orm"
|
|
27
|
+
|
|
28
|
+
const t = $t({ schema: new ArkTypeSchemaConfig() })
|
|
29
|
+
|
|
30
|
+
class User extends Model {
|
|
31
|
+
static override table = "users"
|
|
32
|
+
static override columns = {
|
|
33
|
+
id: t.integer().primaryKey(),
|
|
34
|
+
name: t.string(255).min(2),
|
|
35
|
+
email: t.text().email(),
|
|
36
|
+
}
|
|
37
|
+
static override relations = {
|
|
38
|
+
posts: new HasMany(() => Post),
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
class Post extends Model {
|
|
43
|
+
static override table = "posts"
|
|
44
|
+
static override columns = {
|
|
45
|
+
id: t.integer().primaryKey(),
|
|
46
|
+
userId: t.integer(),
|
|
47
|
+
title: t.string(255),
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const database = new Database("my-app.db")
|
|
52
|
+
database.run(`CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT NOT NULL)`)
|
|
53
|
+
database.run(`CREATE TABLE IF NOT EXISTS posts (id INTEGER PRIMARY KEY AUTOINCREMENT, userId INTEGER NOT NULL, title TEXT NOT NULL)`)
|
|
54
|
+
|
|
55
|
+
const peta = new Peta({ dialect: new BunSqliteDialect({ database }) })
|
|
56
|
+
peta.registerAll([User, Post])
|
|
57
|
+
|
|
58
|
+
export { peta, User, Post }
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Why Peta ORM?
|
|
64
|
+
|
|
65
|
+
| Feature | Raw Kysely | Peta ORM |
|
|
66
|
+
|---------|-----------|----------|
|
|
67
|
+
| **Validation** | Manual | Automatic from column definitions via ArkType |
|
|
68
|
+
| **Models** | Row types only | Class instances with `$save()`, `$delete()`, `$reload()` |
|
|
69
|
+
| **Relations** | Manual JOINs | Declarative `HasMany`, `BelongsTo`, `HasOne`, `ManyToMany` |
|
|
70
|
+
| **Eager loading** | Manual batch | `.with("posts.author")` — one line, batched queries |
|
|
71
|
+
| **Hooks** | — | `beforeCreate`, `afterUpdate`, `beforeDelete`, etc. |
|
|
72
|
+
| **Soft deletes** | — | `withTrashed()`, `onlyTrashed()`, `$restore()`, `$forceDelete()` |
|
|
73
|
+
| **Casting** | — | `$casts: { meta: "json", flags: "boolean" }` |
|
|
74
|
+
| **Serialization** | — | `$hidden`, `$visible`, `$appends`, accessors |
|
|
75
|
+
| **Pagination** | Manual offset/limit | `.paginate(1, 20)` — returns `{ data, total, perPage, ... }` |
|
|
76
|
+
| **Transactions** | Manual | `Model.transaction(fn)` |
|
|
77
|
+
| **Global scopes** | — | `addGlobalScope("active", qb => ...)` |
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Features
|
|
82
|
+
|
|
83
|
+
### Column Types & Validation
|
|
84
|
+
|
|
85
|
+
```ts
|
|
86
|
+
const t = $t({ schema: new ArkTypeSchemaConfig() })
|
|
87
|
+
|
|
88
|
+
class User extends Model {
|
|
89
|
+
static override columns = {
|
|
90
|
+
id: t.integer().primaryKey(),
|
|
91
|
+
name: t.string(255).min(2), // min length
|
|
92
|
+
email: t.text().email(), // email format
|
|
93
|
+
age: t.integer().nullable().min(0).max(150).default(0),
|
|
94
|
+
role: t.enum("admin", "user").default("user"),
|
|
95
|
+
score: t.double().nullable(),
|
|
96
|
+
...t.timestamps(), // createdAt, updatedAt
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Relations & Eager Loading
|
|
102
|
+
|
|
103
|
+
```ts
|
|
104
|
+
class User extends Model {
|
|
105
|
+
static override relations = {
|
|
106
|
+
posts: new HasMany(() => Post, { foreignKey: "userId" }),
|
|
107
|
+
profile: new HasOne(() => Profile, { foreignKey: "userId" }),
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Eager load with dot notation
|
|
112
|
+
const users = await User.query()
|
|
113
|
+
.with("posts")
|
|
114
|
+
.with("posts.author")
|
|
115
|
+
.with({ posts: (q) => q.where("published", true) })
|
|
116
|
+
.execute()
|
|
117
|
+
|
|
118
|
+
// Lazy load after fetch
|
|
119
|
+
await user.$load("posts")
|
|
120
|
+
await collection.load("posts.author")
|
|
121
|
+
|
|
122
|
+
// Relation query
|
|
123
|
+
const posts = await user.$relatedQuery("posts").where("published", true).execute()
|
|
124
|
+
|
|
125
|
+
// Existence filters
|
|
126
|
+
const authors = await User.query().has("posts").execute()
|
|
127
|
+
const active = await User.query().whereHas("posts", (q) => q.where("published", true)).execute()
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### CRUD & Pagination
|
|
131
|
+
|
|
132
|
+
```ts
|
|
133
|
+
// Insert
|
|
134
|
+
const user = await User.insert({ name: "Alice", email: "a@b.com" })
|
|
135
|
+
|
|
136
|
+
// Find
|
|
137
|
+
const found = await User.find(1)
|
|
138
|
+
const first = await User.query().where("email", "like", "%@b.com").first()
|
|
139
|
+
|
|
140
|
+
// Update
|
|
141
|
+
user.set("name", "Alice Updated")
|
|
142
|
+
await user.$save()
|
|
143
|
+
await User.update(1, { name: "Alice Updated" })
|
|
144
|
+
|
|
145
|
+
// Delete
|
|
146
|
+
await user.$delete()
|
|
147
|
+
await User.delete(1)
|
|
148
|
+
|
|
149
|
+
// Paginate
|
|
150
|
+
const page = await Post.query().orderBy("id", "asc").paginate(1, 20)
|
|
151
|
+
// → { data: Post[], total, perPage, currentPage, lastPage, hasMorePages }
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Hooks & Timestamps
|
|
155
|
+
|
|
156
|
+
```ts
|
|
157
|
+
class User extends Model {
|
|
158
|
+
static {
|
|
159
|
+
this.on("beforeCreate", (user) => { user.email = user.email.toLowerCase() })
|
|
160
|
+
this.on("afterCreate", (user) => { console.log("Created:", user.get("id")) })
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
User.registerTimestamps() // auto-set createdAt/updatedAt
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Soft Deletes
|
|
168
|
+
|
|
169
|
+
```ts
|
|
170
|
+
User.registerSoftDeletes()
|
|
171
|
+
|
|
172
|
+
await user.$delete() // sets deletedAt timestamp
|
|
173
|
+
await user.$restore() // clears deletedAt
|
|
174
|
+
await user.$forceDelete() // actually deletes
|
|
175
|
+
|
|
176
|
+
const active = await User.query().execute() // excludes deleted
|
|
177
|
+
const all = await User.query().withTrashed().execute() // includes deleted
|
|
178
|
+
const trashed = await User.query().onlyTrashed().execute() // only deleted
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Attribute Casting & Serialization
|
|
182
|
+
|
|
183
|
+
```ts
|
|
184
|
+
class User extends Model {
|
|
185
|
+
static override $casts = {
|
|
186
|
+
meta: "json",
|
|
187
|
+
flags: "boolean",
|
|
188
|
+
createdAt: "date",
|
|
189
|
+
}
|
|
190
|
+
static override $hidden = ["password"]
|
|
191
|
+
static override $visible = ["id", "name", "email"] // whitelist
|
|
192
|
+
static override $appends = ["fullName"]
|
|
193
|
+
|
|
194
|
+
getFullNameAttribute() { return `${this.get("first")} ${this.get("last")}` }
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
const json = user.$toJSON() // password excluded, fullName appended, meta parsed
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### Global Scopes & Transactions
|
|
201
|
+
|
|
202
|
+
```ts
|
|
203
|
+
User.addGlobalScope("active", (qb) => qb.where("active", "=", 1))
|
|
204
|
+
|
|
205
|
+
// Query without the scope
|
|
206
|
+
await User.query().withoutGlobalScope("active").execute()
|
|
207
|
+
|
|
208
|
+
// Transactions
|
|
209
|
+
await User.transaction(async (trx) => {
|
|
210
|
+
await trx.insertInto("users").values({ name: "A" }).execute()
|
|
211
|
+
await trx.insertInto("posts").values({ userId: 1, title: "B" }).execute()
|
|
212
|
+
})
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### Collection Utilities
|
|
216
|
+
|
|
217
|
+
```ts
|
|
218
|
+
const users = await User.query().execute()
|
|
219
|
+
const col = new Collection(users)
|
|
220
|
+
|
|
221
|
+
col.pluck("name") // ["Alice", "Bob"]
|
|
222
|
+
col.groupBy("role") // { admin: [...], user: [...] }
|
|
223
|
+
col.load("posts") // eager load relations
|
|
224
|
+
col.sum("score") // aggregate helpers
|
|
225
|
+
col.avg("age")
|
|
226
|
+
col.unique("role")
|
|
227
|
+
col.sortBy("name")
|
|
228
|
+
col.chunk(10) // split into batches
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## Examples
|
|
234
|
+
|
|
235
|
+
All self-contained (inline SQLite, run directly):
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
bun run examples/01-basic-setup.ts
|
|
239
|
+
bun run examples/04-relations.ts
|
|
240
|
+
bun run examples/07-soft-deletes.ts
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
| # | Example | Topic |
|
|
244
|
+
|---|---------|-------|
|
|
245
|
+
| 01 | [basic-setup](./examples/01-basic-setup.ts) | Peta init + SQLite setup |
|
|
246
|
+
| 02 | [model-definition](./examples/02-model-definition.ts) | Columns, types, modifiers, timestamps |
|
|
247
|
+
| 03 | [crud](./examples/03-crud.ts) | insert, find, update, delete, paginate |
|
|
248
|
+
| 04 | [relations](./examples/04-relations.ts) | HasMany, BelongsTo, HasOne, eager loading |
|
|
249
|
+
| 05 | [query-builder](./examples/05-query-builder.ts) | where, orderBy, join, has, count |
|
|
250
|
+
| 06 | [hooks-timestamps](./examples/06-hooks-timestamps.ts) | beforeCreate, afterCreate, registerTimestamps |
|
|
251
|
+
| 07 | [soft-deletes](./examples/07-soft-deletes.ts) | $delete, $restore, $forceDelete, withTrashed |
|
|
252
|
+
| 08 | [collection-paginator](./examples/08-collection-paginator.ts) | Collection, Paginator |
|
|
253
|
+
| 09 | [hono-integration](./examples/09-hono-integration.ts) | Hono app stub |
|
|
254
|
+
| 10 | [elysia-integration](./examples/10-elysia-integration.ts) | Elysia app stub |
|
|
255
|
+
| 11 | [many-to-many](./examples/11-many-to-many.ts) | ManyToMany via pivot table |
|
|
256
|
+
| 12 | [transactions](./examples/12-transactions.ts) | Model.transaction(), rollback |
|
|
257
|
+
| 13 | [casting](./examples/13-casting.ts) | $casts, $hidden, $appends, accessors |
|
|
258
|
+
| 14 | [global-scopes](./examples/14-global-scopes.ts) | addGlobalScope(), withoutGlobalScope() |
|
|
259
|
+
| 15 | [batch](./examples/15-batch.ts) | insertMany, insertMany() |
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## API Overview
|
|
264
|
+
|
|
265
|
+
| Module | Key exports | File |
|
|
266
|
+
|--------|-------------|------|
|
|
267
|
+
| **Core** | `Peta`, `Model`, `$t`, `Collection` | `src/index.ts` |
|
|
268
|
+
| **Columns** | `t.integer()`, `t.string()`, `t.email()`, `.min()`, `.max()`, `.nullable()`, `.default()` | `src/columns/column-types.ts` |
|
|
269
|
+
| **Builders** | `.where()`, `.with()`, `.paginate()`, `.chunk()`, `.sum()`, `.toSQL()` | `src/builder/query-builder.ts` |
|
|
270
|
+
| **Relations** | `HasMany`, `BelongsTo`, `HasOne`, `ManyToMany`, `HasManyThrough` | `src/relations/Relation.ts` |
|
|
271
|
+
| **Polymorphic** | `MorphTo`, `MorphMany`, `MorphOne` | `src/relations/Morph.ts` |
|
|
272
|
+
| **Hooks** | `HookManager`, `on()`, `off()`, `trigger()` | `src/hooks/lifecycle.ts` |
|
|
273
|
+
| **Paginator** | `Paginator`, `.paginate()` | `src/pagination/Paginator.ts` |
|
|
274
|
+
| **Errors** | `ModelNotFoundError`, `RelationNotFoundError`, `ValidationError` | `src/errors/errors.ts` |
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## License
|
|
279
|
+
|
|
280
|
+
MIT
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Kysely } from "kysely";
|
|
2
|
+
import type { Model, ModelClass } from "../model/model";
|
|
3
|
+
import type { PetaLike } from "../types";
|
|
4
|
+
export declare class DeleteBuilder<T extends Model> {
|
|
5
|
+
#private;
|
|
6
|
+
constructor(modelClass: ModelClass<T>, peta: PetaLike, kysely?: Kysely<any>);
|
|
7
|
+
execute(id: number | string): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=delete-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-builder.d.ts","sourceRoot":"","sources":["../../src/builder/delete-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAExC,qBAAa,aAAa,CAAC,CAAC,SAAS,KAAK;;gBAI5B,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC;IAKrE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGlD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Model, ModelClass } from "../model/model";
|
|
2
|
+
import type { ModelQueryBuilder } from "./query-builder";
|
|
3
|
+
export interface EagerLoad {
|
|
4
|
+
name: string;
|
|
5
|
+
constraints: ((qb: ModelQueryBuilder<any>) => void) | null;
|
|
6
|
+
}
|
|
7
|
+
export type WithArg = string | Record<string, ((qb: ModelQueryBuilder<any>) => void) | true>;
|
|
8
|
+
export declare class EagerLoader {
|
|
9
|
+
#private;
|
|
10
|
+
load(modelClass: ModelClass, relationData: Record<string, Model | Model[] | null>, models: Model[], names: string[]): Promise<void>;
|
|
11
|
+
loadRelated(models: Model[], el: EagerLoad, modelClass: ModelClass): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=eager-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eager-loader.d.ts","sourceRoot":"","sources":["../../src/builder/eager-loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,iBAAiB,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAA;CAC3D;AAED,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,iBAAiB,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;AAE5F,qBAAa,WAAW;;IAChB,IAAI,CACR,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,EACpD,MAAM,EAAE,KAAK,EAAE,EACf,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,IAAI,CAAC;IAMV,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAyCzF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { DeleteBuilder } from "./delete-builder";
|
|
2
|
+
export type { EagerLoad, WithArg } from "./eager-loader";
|
|
3
|
+
export { EagerLoader } from "./eager-loader";
|
|
4
|
+
export { InsertBuilder } from "./insert-builder";
|
|
5
|
+
export type { PaginatedResult } from "./query-builder";
|
|
6
|
+
export { ModelQueryBuilder } from "./query-builder";
|
|
7
|
+
export { UpdateBuilder } from "./update-builder";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/builder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Kysely } from "kysely";
|
|
2
|
+
import type { Model, ModelClass } from "../model/model";
|
|
3
|
+
import type { PetaLike } from "../types";
|
|
4
|
+
export declare class InsertBuilder<T extends Model> {
|
|
5
|
+
#private;
|
|
6
|
+
constructor(modelClass: ModelClass<T>, peta: PetaLike, kysely?: Kysely<any>);
|
|
7
|
+
execute(data: Record<string, unknown>): Promise<T>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=insert-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insert-builder.d.ts","sourceRoot":"","sources":["../../src/builder/insert-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEpC,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAExC,qBAAa,aAAa,CAAC,CAAC,SAAS,KAAK;;gBAI5B,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC;IAKrE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CA0BzD"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { Kysely } from "kysely";
|
|
2
|
+
import type { Model, ModelClass } from "../model/model";
|
|
3
|
+
import type { PetaLike } from "../types";
|
|
4
|
+
import { type WithArg } from "./eager-loader";
|
|
5
|
+
export declare class ModelQueryBuilder<T extends Model> {
|
|
6
|
+
#private;
|
|
7
|
+
constructor(modelClass: ModelClass<T>, peta: PetaLike, kysely?: Kysely<any>);
|
|
8
|
+
get peta(): PetaLike;
|
|
9
|
+
clone(): ModelQueryBuilder<T>;
|
|
10
|
+
withoutGlobalScope(name: string): this;
|
|
11
|
+
execute(): Promise<T[]>;
|
|
12
|
+
executeTakeFirst(): Promise<T | undefined>;
|
|
13
|
+
executeTakeFirstOrThrow(): Promise<T>;
|
|
14
|
+
find(id: number | string): Promise<T | undefined>;
|
|
15
|
+
findOrFail(id: number | string): Promise<T>;
|
|
16
|
+
first(): Promise<T | undefined>;
|
|
17
|
+
toSQL(): {
|
|
18
|
+
sql: string;
|
|
19
|
+
parameters: readonly unknown[];
|
|
20
|
+
};
|
|
21
|
+
count(): Promise<number>;
|
|
22
|
+
sum(column: string): Promise<number>;
|
|
23
|
+
avg(column: string): Promise<number>;
|
|
24
|
+
min(column: string): Promise<number>;
|
|
25
|
+
max(column: string): Promise<number>;
|
|
26
|
+
chunk(size: number, callback: (chunk: T[]) => Promise<void>): Promise<void>;
|
|
27
|
+
paginate(page: number, perPage?: number): Promise<import("../pagination/paginator").Paginator<T>>;
|
|
28
|
+
with(...relations: WithArg[]): this;
|
|
29
|
+
updateMany(data: Record<string, unknown>): Promise<number>;
|
|
30
|
+
deleteMany(): Promise<number>;
|
|
31
|
+
withTrashed(): this;
|
|
32
|
+
onlyTrashed(): this;
|
|
33
|
+
whereIn(column: string, values: unknown[]): this;
|
|
34
|
+
whereInPivot(column: string, values: unknown[]): this;
|
|
35
|
+
has(relationName: string): this;
|
|
36
|
+
whereHas(relationName: string, _callback?: (qb: ModelQueryBuilder<any>) => void): this;
|
|
37
|
+
whereDoesntHave(relationName: string, _callback?: (qb: ModelQueryBuilder<any>) => void): this;
|
|
38
|
+
where(column: unknown, operator: unknown, value: unknown): this;
|
|
39
|
+
where(column: unknown, value: unknown): this;
|
|
40
|
+
whereRef(col1: string, operator: string, col2: string): this;
|
|
41
|
+
orWhere(column: unknown, operator: unknown, value: unknown): this;
|
|
42
|
+
orWhere(column: unknown, value: unknown): this;
|
|
43
|
+
orderBy(column: string, direction?: "asc" | "desc"): this;
|
|
44
|
+
limit(n: number): this;
|
|
45
|
+
offset(n: number): this;
|
|
46
|
+
select(...columns: string[]): this;
|
|
47
|
+
selectAll(table?: string): this;
|
|
48
|
+
innerJoin(table: string, lhs: string, rhs: string): this;
|
|
49
|
+
leftJoin(table: string, lhs: string, rhs: string): this;
|
|
50
|
+
groupBy(...columns: string[]): this;
|
|
51
|
+
having(column: string, operator: string, value: unknown): this;
|
|
52
|
+
}
|
|
53
|
+
export interface PaginatedResult<T> {
|
|
54
|
+
data: T[];
|
|
55
|
+
total: number;
|
|
56
|
+
perPage: number;
|
|
57
|
+
currentPage: number;
|
|
58
|
+
lastPage: number;
|
|
59
|
+
hasMorePages: boolean;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=query-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../src/builder/query-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Kysely } from "kysely";
|
|
2
|
+
import type { Model, ModelClass } from "../model/model";
|
|
3
|
+
import type { PetaLike } from "../types";
|
|
4
|
+
export declare class UpdateBuilder<T extends Model> {
|
|
5
|
+
#private;
|
|
6
|
+
constructor(modelClass: ModelClass<T>, peta: PetaLike, kysely?: Kysely<any>);
|
|
7
|
+
execute(id: number | string, data: Record<string, unknown>): Promise<T>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=update-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-builder.d.ts","sourceRoot":"","sources":["../../src/builder/update-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAGpC,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAExC,qBAAa,aAAa,CAAC,CAAC,SAAS,KAAK;;gBAI5B,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC;IAKrE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CA2B9E"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { Model } from "../model/model";
|
|
2
|
+
export declare class Collection<T extends Model> {
|
|
3
|
+
#private;
|
|
4
|
+
constructor(items?: T[]);
|
|
5
|
+
get length(): number;
|
|
6
|
+
[Symbol.iterator](): Iterator<T>;
|
|
7
|
+
at(index: number): T | undefined;
|
|
8
|
+
first(): T | undefined;
|
|
9
|
+
last(): T | undefined;
|
|
10
|
+
all(): T[];
|
|
11
|
+
findBy(id: number | string): T | undefined;
|
|
12
|
+
pluck(key: string): readonly unknown[];
|
|
13
|
+
groupBy(key: string): Record<string, T[]>;
|
|
14
|
+
keyBy(key: string): Record<string, T>;
|
|
15
|
+
toJSON(): Record<string, unknown>[];
|
|
16
|
+
map<U>(fn: (item: T, index: number) => U): U[];
|
|
17
|
+
filter(fn: (item: T, index: number) => boolean): Collection<T>;
|
|
18
|
+
reduce<U>(fn: (acc: U, item: T, index: number) => U, initial: U): U;
|
|
19
|
+
forEach(fn: (item: T, index: number) => void): void;
|
|
20
|
+
find(fn: (item: T) => boolean): T | undefined;
|
|
21
|
+
some(fn: (item: T) => boolean): boolean;
|
|
22
|
+
includes(item: T): boolean;
|
|
23
|
+
load(...relations: string[]): Promise<this>;
|
|
24
|
+
get(key: string): unknown[];
|
|
25
|
+
isEmpty(): this is Collection<T> & {
|
|
26
|
+
length: 0;
|
|
27
|
+
};
|
|
28
|
+
isNotEmpty(): this is {
|
|
29
|
+
length: number;
|
|
30
|
+
};
|
|
31
|
+
sum(key: string): number;
|
|
32
|
+
avg(key: string): number;
|
|
33
|
+
min(key: string): number | undefined;
|
|
34
|
+
max(key: string): number | undefined;
|
|
35
|
+
contains(value: unknown, key?: string): boolean;
|
|
36
|
+
unique(key: string): Collection<T>;
|
|
37
|
+
sortBy(key: string, direction?: "asc" | "desc"): Collection<T>;
|
|
38
|
+
shuffle(): Collection<T>;
|
|
39
|
+
take(n: number): Collection<T>;
|
|
40
|
+
skip(n: number): Collection<T>;
|
|
41
|
+
chunk(size: number): Collection<T>[];
|
|
42
|
+
each(fn: (item: T, index: number) => void): this;
|
|
43
|
+
diff(other: Collection<T>): Collection<T>;
|
|
44
|
+
intersect(other: Collection<T>): Collection<T>;
|
|
45
|
+
push(...items: T[]): void;
|
|
46
|
+
concat(other: Collection<T> | T[]): Collection<T>;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=collection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../../src/collection/collection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Constraint, SchemaConfig } from "./schema-config";
|
|
2
|
+
export declare class ValidationError extends Error {
|
|
3
|
+
readonly errors: unknown;
|
|
4
|
+
constructor(message: string, errors?: unknown);
|
|
5
|
+
}
|
|
6
|
+
export declare class ArkTypeSchemaConfig implements SchemaConfig {
|
|
7
|
+
#private;
|
|
8
|
+
compile(dataType: string, args: unknown[], constraints: Constraint[]): unknown;
|
|
9
|
+
parse<T>(schema: unknown, value: unknown): T;
|
|
10
|
+
assert<T>(schema: unknown, value: unknown): T;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=arktype-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arktype-config.d.ts","sourceRoot":"","sources":["../../src/columns/arktype-config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE/D,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;gBACZ,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO;CAK9C;AAED,qBAAa,mBAAoB,YAAW,YAAY;;IACtD,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO;IAiG9E,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC;IAY5C,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC;CAiB9C"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Column } from "./column";
|
|
2
|
+
import type { SchemaConfig } from "./schema-config";
|
|
3
|
+
export interface ColumnTypes {
|
|
4
|
+
integer: () => Column<number>;
|
|
5
|
+
smallint: () => Column<number>;
|
|
6
|
+
bigint: () => Column<number>;
|
|
7
|
+
string: (maxLength?: number) => Column<string>;
|
|
8
|
+
text: () => Column<string>;
|
|
9
|
+
boolean: () => Column<boolean>;
|
|
10
|
+
timestamp: () => Column<string>;
|
|
11
|
+
date: () => Column<string>;
|
|
12
|
+
json: <T = unknown>() => Column<T>;
|
|
13
|
+
jsonb: <T = unknown>() => Column<T>;
|
|
14
|
+
float: () => Column<number>;
|
|
15
|
+
double: () => Column<number>;
|
|
16
|
+
decimal: (precision?: number, scale?: number) => Column<number>;
|
|
17
|
+
uuid: () => Column<string>;
|
|
18
|
+
enum: <T extends string>(...values: T[]) => Column<T>;
|
|
19
|
+
timestamps: () => {
|
|
20
|
+
createdAt: Column<string>;
|
|
21
|
+
updatedAt: Column<string>;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export declare function $t(config: {
|
|
25
|
+
schema: SchemaConfig;
|
|
26
|
+
}): ColumnTypes;
|
|
27
|
+
//# sourceMappingURL=column-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column-types.d.ts","sourceRoot":"","sources":["../../src/columns/column-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAEnD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;IAC7B,QAAQ,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;IAC9B,MAAM,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;IAC5B,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAA;IAC9C,IAAI,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;IAC1B,OAAO,EAAE,MAAM,MAAM,CAAC,OAAO,CAAC,CAAA;IAC9B,SAAS,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;IAC/B,IAAI,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;IAC1B,IAAI,EAAE,CAAC,CAAC,GAAG,OAAO,OAAO,MAAM,CAAC,CAAC,CAAC,CAAA;IAClC,KAAK,EAAE,CAAC,CAAC,GAAG,OAAO,OAAO,MAAM,CAAC,CAAC,CAAC,CAAA;IACnC,KAAK,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;IAC3B,MAAM,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;IAC5B,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAA;IAC/D,IAAI,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;IAC1B,IAAI,EAAE,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,CAAA;IACrD,UAAU,EAAE,MAAM;QAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;KAAE,CAAA;CAC3E;AAED,wBAAgB,EAAE,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,GAAG,WAAW,CA8BhE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Constraint, SchemaConfig } from "./schema-config";
|
|
2
|
+
export declare class Column<out T = unknown> {
|
|
3
|
+
#private;
|
|
4
|
+
constructor(schema: SchemaConfig, dataType: string, args?: unknown[]);
|
|
5
|
+
get arkType(): unknown;
|
|
6
|
+
get dataType(): string;
|
|
7
|
+
get args(): readonly unknown[];
|
|
8
|
+
get constraints(): readonly Constraint[];
|
|
9
|
+
get isNullable(): boolean;
|
|
10
|
+
get isPrimaryKey(): boolean;
|
|
11
|
+
get isUnique(): boolean;
|
|
12
|
+
get defaultValue(): unknown;
|
|
13
|
+
hasConstraint(type: string): boolean;
|
|
14
|
+
parse(value: unknown): T;
|
|
15
|
+
assert(value: unknown): T;
|
|
16
|
+
primaryKey(): Column<T>;
|
|
17
|
+
nullable(): Column<T | null>;
|
|
18
|
+
default<V>(value: V): Column<T>;
|
|
19
|
+
unique(): Column<T>;
|
|
20
|
+
index(): Column<T>;
|
|
21
|
+
min(n: number): Column<T>;
|
|
22
|
+
max(n: number): Column<T>;
|
|
23
|
+
email(): Column<T>;
|
|
24
|
+
url(): Column<T>;
|
|
25
|
+
pattern(regex: RegExp | string): Column<T>;
|
|
26
|
+
references(table: () => unknown, columns: string[]): Column<T>;
|
|
27
|
+
}
|
|
28
|
+
export type ColumnShape = Record<string, Column>;
|
|
29
|
+
export type ColumnValue<C> = C extends Column<infer T> ? T : never;
|
|
30
|
+
//# sourceMappingURL=column.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../../src/columns/column.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE/D,qBAAa,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO;;gBAOrB,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,OAAO,EAAO;IAOxE,IAAI,OAAO,IAAI,OAAO,CAKrB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,IAAI,IAAI,SAAS,OAAO,EAAE,CAE7B;IAED,IAAI,WAAW,IAAI,SAAS,UAAU,EAAE,CAEvC;IAED,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,YAAY,IAAI,OAAO,CAK1B;IAED,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIpC,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC;IAIxB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC;IAIzB,UAAU,IAAI,MAAM,CAAC,CAAC,CAAC;IAIvB,QAAQ,IAAI,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;IAI5B,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAI/B,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;IAInB,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;IAIlB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;IAIzB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;IAIzB,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;IAIlB,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC;IAIhB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;IAK1C,UAAU,CAAC,KAAK,EAAE,MAAM,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;CAU/D;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEhD,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface Constraint {
|
|
2
|
+
type: string;
|
|
3
|
+
args: unknown[];
|
|
4
|
+
}
|
|
5
|
+
export interface SchemaConfig {
|
|
6
|
+
compile(dataType: string, args: unknown[], constraints: Constraint[]): unknown;
|
|
7
|
+
parse<T>(schema: unknown, value: unknown): T;
|
|
8
|
+
assert<T>(schema: unknown, value: unknown): T;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=schema-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-config.d.ts","sourceRoot":"","sources":["../../src/columns/schema-config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,OAAO,EAAE,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;IAC9E,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,CAAA;IAC5C,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,CAAA;CAC9C"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ValidationError } from "../columns/arktype-config";
|
|
2
|
+
export { ValidationError };
|
|
3
|
+
export declare class ModelNotFoundError extends Error {
|
|
4
|
+
readonly modelClass?: string;
|
|
5
|
+
readonly id?: number | string;
|
|
6
|
+
constructor(modelClass?: string, id?: number | string);
|
|
7
|
+
}
|
|
8
|
+
export declare class RelationNotFoundError extends Error {
|
|
9
|
+
readonly modelClass?: string;
|
|
10
|
+
readonly relationName?: string;
|
|
11
|
+
constructor(modelClass?: string, relationName?: string);
|
|
12
|
+
}
|
|
13
|
+
export declare class ModelNotRegisteredError extends Error {
|
|
14
|
+
readonly modelClass?: string;
|
|
15
|
+
constructor(modelClass?: string);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,eAAe,EAAE,CAAA;AAE1B,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;gBAEjB,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;CAOtD;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;gBAElB,UAAU,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;CAOvD;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;gBAEhB,UAAU,CAAC,EAAE,MAAM;CAMhC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Model } from "../model/model";
|
|
2
|
+
export type LifecycleEvent = "beforeCreate" | "afterCreate" | "beforeUpdate" | "afterUpdate" | "beforeSave" | "afterSave" | "beforeDelete" | "afterDelete" | "beforeRestore" | "afterRestore" | "beforeForceDelete" | "afterForceDelete";
|
|
3
|
+
export type HookCallback = (model: Model) => void | Promise<void>;
|
|
4
|
+
export declare class HookManager {
|
|
5
|
+
#private;
|
|
6
|
+
on(event: LifecycleEvent, callback: HookCallback): () => void;
|
|
7
|
+
off(event: LifecycleEvent, callback: HookCallback): void;
|
|
8
|
+
trigger(event: LifecycleEvent, model: Model): Promise<void>;
|
|
9
|
+
clone(): HookManager;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/hooks/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAE3C,MAAM,MAAM,cAAc,GACtB,cAAc,GACd,aAAa,GACb,cAAc,GACd,aAAa,GACb,YAAY,GACZ,WAAW,GACX,cAAc,GACd,aAAa,GACb,eAAe,GACf,cAAc,GACd,mBAAmB,GACnB,kBAAkB,CAAA;AAEtB,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAEjE,qBAAa,WAAW;;IAGtB,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,GAAG,MAAM,IAAI;IAU7D,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI;IAOlD,OAAO,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjE,KAAK,IAAI,WAAW;CAOrB"}
|