peta-orm 0.2.6 → 0.3.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/README.md +23 -1
- package/bin/peta +1 -1
- package/dist/collection-Dv3sQPMx.mjs +173 -0
- package/dist/crud-BCWvg5MI.mjs +101 -0
- package/dist/errors-sfFJolfu.mjs +69 -0
- package/dist/factory-rIbPGjRg.mjs +173 -0
- package/dist/hooks-BD0xy7uw.mjs +77 -0
- package/dist/index-BdJnSMYi.d.mts +480 -0
- package/dist/index.d.mts +215 -0
- package/dist/index.mjs +2601 -0
- package/dist/migrations/cli.d.mts +4 -0
- package/dist/migrations/cli.mjs +74 -0
- package/dist/migrations/index.d.mts +53 -0
- package/dist/migrations/index.mjs +2 -0
- package/dist/rolldown-runtime-D7D4PA-g.mjs +13 -0
- package/dist/runner-DQ7uT6LC.mjs +180 -0
- package/dist/save-B8rudcT5.mjs +331 -0
- package/dist/state-LtlHp6XV.mjs +56 -0
- package/package.json +25 -15
- package/dist/builder/delete-builder.d.ts +0 -9
- package/dist/builder/delete-builder.d.ts.map +0 -1
- package/dist/builder/eager-loader.d.ts +0 -13
- package/dist/builder/eager-loader.d.ts.map +0 -1
- package/dist/builder/index.d.ts +0 -6
- package/dist/builder/index.d.ts.map +0 -1
- package/dist/builder/query-builder.d.ts +0 -57
- package/dist/builder/query-builder.d.ts.map +0 -1
- package/dist/builder/update-builder.d.ts +0 -9
- package/dist/builder/update-builder.d.ts.map +0 -1
- package/dist/collection/collection.d.ts +0 -48
- package/dist/collection/collection.d.ts.map +0 -1
- package/dist/collection-wwtv7qmv.js +0 -8
- package/dist/columns/arktype-config.d.ts +0 -8
- package/dist/columns/arktype-config.d.ts.map +0 -1
- package/dist/columns/column-types.d.ts +0 -27
- package/dist/columns/column-types.d.ts.map +0 -1
- package/dist/columns/column.d.ts +0 -30
- package/dist/columns/column.d.ts.map +0 -1
- package/dist/columns/schema-config.d.ts +0 -10
- package/dist/columns/schema-config.d.ts.map +0 -1
- package/dist/errors/errors.d.ts +0 -26
- package/dist/errors/errors.d.ts.map +0 -1
- package/dist/hooks/lifecycle.d.ts +0 -11
- package/dist/hooks/lifecycle.d.ts.map +0 -1
- package/dist/index-4xnrys72.js +0 -56
- package/dist/index-ddxdqxz6.js +0 -636
- package/dist/index-k18nf2r7.js +0 -18
- package/dist/index-qb301480.js +0 -2424
- package/dist/index-sm1xx8gs.js +0 -7828
- package/dist/index.d.ts +0 -24
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -9229
- package/dist/integrations/elysia.d.ts +0 -12
- package/dist/integrations/elysia.d.ts.map +0 -1
- package/dist/integrations/hono.d.ts +0 -7
- package/dist/integrations/hono.d.ts.map +0 -1
- package/dist/migrations/cli.d.ts +0 -2
- package/dist/migrations/cli.d.ts.map +0 -1
- package/dist/migrations/cli.js +0 -4079
- package/dist/migrations/config.d.ts +0 -5
- package/dist/migrations/config.d.ts.map +0 -1
- package/dist/migrations/generator.d.ts +0 -9
- package/dist/migrations/generator.d.ts.map +0 -1
- package/dist/migrations/index.d.ts +0 -5
- package/dist/migrations/index.d.ts.map +0 -1
- package/dist/migrations/index.js +0 -17
- package/dist/migrations/runner.d.ts +0 -12
- package/dist/migrations/runner.d.ts.map +0 -1
- package/dist/migrations/types.d.ts +0 -26
- package/dist/migrations/types.d.ts.map +0 -1
- package/dist/model/model-delete.d.ts +0 -7
- package/dist/model/model-delete.d.ts.map +0 -1
- package/dist/model/model-hooks.d.ts +0 -10
- package/dist/model/model-hooks.d.ts.map +0 -1
- package/dist/model/model-relation.d.ts +0 -7
- package/dist/model/model-relation.d.ts.map +0 -1
- package/dist/model/model-save.d.ts +0 -6
- package/dist/model/model-save.d.ts.map +0 -1
- package/dist/model/model-scope.d.ts +0 -6
- package/dist/model/model-scope.d.ts.map +0 -1
- package/dist/model/model-serialize.d.ts +0 -3
- package/dist/model/model-serialize.d.ts.map +0 -1
- package/dist/model/model-state.d.ts +0 -27
- package/dist/model/model-state.d.ts.map +0 -1
- package/dist/model/model.d.ts +0 -88
- package/dist/model/model.d.ts.map +0 -1
- package/dist/pagination/paginator.d.ts +0 -30
- package/dist/pagination/paginator.d.ts.map +0 -1
- package/dist/paginator-tmp4hxj5.js +0 -9
- package/dist/peta.d.ts +0 -20
- package/dist/peta.d.ts.map +0 -1
- package/dist/relations/morph.d.ts +0 -44
- package/dist/relations/morph.d.ts.map +0 -1
- package/dist/relations/relation.d.ts +0 -85
- package/dist/relations/relation.d.ts.map +0 -1
- package/dist/types.d.ts +0 -18
- package/dist/types.d.ts.map +0 -1
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import { A as PaginatorJson, C as InsertGraphOptions, D as RelationType, E as RelationOptions, M as Database, O as PaginatedResult, S as QueryBuilder, T as Relation, _ as createColumn, a as ModelDefinition, b as Plugin, c as HookCallback, d as createHookManager, f as ModelId, g as ColumnValue, h as ColumnShape, i as ModelConfig, j as createPaginator, k as Paginator, l as HookManager, m as Column, n as Collection, o as ModelInstance, p as ORMLike, r as createCollection, s as Attribute, t as defineModel, u as LifecycleEvent, v as Constraint, w as UpsertGraphOptions, x as createQueryBuilder, y as SchemaConfig } from "./index-BdJnSMYi.mjs";
|
|
2
|
+
import { Dialect } from "kysely";
|
|
3
|
+
|
|
4
|
+
//#region src/columns/arktype.d.ts
|
|
5
|
+
declare function createArkTypeSchemaConfig(): SchemaConfig;
|
|
6
|
+
//#endregion
|
|
7
|
+
//#region src/columns/types.d.ts
|
|
8
|
+
interface ColumnTypes {
|
|
9
|
+
integer: () => Column<number>;
|
|
10
|
+
smallint: () => Column<number>;
|
|
11
|
+
bigint: () => Column<number>;
|
|
12
|
+
string: (maxLength?: number) => Column<string>;
|
|
13
|
+
text: () => Column<string>;
|
|
14
|
+
boolean: () => Column<boolean>;
|
|
15
|
+
timestamp: () => Column<string>;
|
|
16
|
+
date: () => Column<string>;
|
|
17
|
+
json: <T = unknown>() => Column<T>;
|
|
18
|
+
jsonb: <T = unknown>() => Column<T>;
|
|
19
|
+
float: () => Column<number>;
|
|
20
|
+
double: () => Column<number>;
|
|
21
|
+
decimal: (precision?: number, scale?: number) => Column<number>;
|
|
22
|
+
uuid: () => Column<string>;
|
|
23
|
+
enum: <T extends string>(...values: T[]) => Column<T>;
|
|
24
|
+
timestamps: () => {
|
|
25
|
+
createdAt: Column<string>;
|
|
26
|
+
updatedAt: Column<string>;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
declare function t(config: {
|
|
30
|
+
schema: SchemaConfig;
|
|
31
|
+
}): ColumnTypes;
|
|
32
|
+
//#endregion
|
|
33
|
+
//#region src/errors/classes.d.ts
|
|
34
|
+
type DatabaseErrorCode = "UNIQUE_CONSTRAINT" | "FOREIGN_KEY_CONSTRAINT" | "NOT_NULL_CONSTRAINT" | "CHECK_CONSTRAINT" | "MISSING_ID" | "RELATION_NOT_FOUND" | "MODEL_NOT_REGISTERED" | "UNKNOWN";
|
|
35
|
+
declare class ValidationError extends Error {
|
|
36
|
+
name: "ValidationError";
|
|
37
|
+
}
|
|
38
|
+
declare class ModelNotFoundError extends Error {
|
|
39
|
+
name: "ModelNotFoundError";
|
|
40
|
+
constructor(model: string, id: ModelIdValue);
|
|
41
|
+
}
|
|
42
|
+
type ModelIdValue = number | string | bigint;
|
|
43
|
+
declare class RelationNotFoundError extends Error {
|
|
44
|
+
name: "RelationNotFoundError";
|
|
45
|
+
constructor(model: string, relation: string);
|
|
46
|
+
}
|
|
47
|
+
declare class RelationNotAllowedError extends Error {
|
|
48
|
+
name: "RelationNotAllowedError";
|
|
49
|
+
constructor(model: string, relation: string);
|
|
50
|
+
}
|
|
51
|
+
declare class ModelNotRegisteredError extends Error {
|
|
52
|
+
name: "ModelNotRegisteredError";
|
|
53
|
+
constructor(model: string);
|
|
54
|
+
}
|
|
55
|
+
declare class DatabaseError extends Error {
|
|
56
|
+
name: "DatabaseError";
|
|
57
|
+
code: DatabaseErrorCode;
|
|
58
|
+
table?: string;
|
|
59
|
+
detail?: string;
|
|
60
|
+
constructor(message: string, code: DatabaseErrorCode, table?: string, detail?: string);
|
|
61
|
+
}
|
|
62
|
+
//#endregion
|
|
63
|
+
//#region src/errors/normalizer.d.ts
|
|
64
|
+
declare function normalizeError(e: unknown, table?: string): DatabaseError;
|
|
65
|
+
//#endregion
|
|
66
|
+
//#region src/orm/index.d.ts
|
|
67
|
+
interface ORMConfig {
|
|
68
|
+
dialect: Dialect;
|
|
69
|
+
models?: Record<string, ModelDefinition>;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Create an ORM instance — the central registry that wires Kysely to model definitions.
|
|
73
|
+
* Replaces createPeta() from v0.x.
|
|
74
|
+
*/
|
|
75
|
+
declare function createORM(config: ORMConfig): ORMLike & {
|
|
76
|
+
kysely: Database;
|
|
77
|
+
};
|
|
78
|
+
//#endregion
|
|
79
|
+
//#region src/plugins/soft-deletes.d.ts
|
|
80
|
+
/**
|
|
81
|
+
* Plugin that enables soft-delete behavior on a model.
|
|
82
|
+
* Sets `deletedAt` on delete, automatically filters out deleted records.
|
|
83
|
+
*
|
|
84
|
+
* ```ts
|
|
85
|
+
* const User = defineModel('users', {
|
|
86
|
+
* columns: { deletedAt: t.timestamp().nullable() }
|
|
87
|
+
* }).use(softDeletes())
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
declare function softDeletes(opts?: {
|
|
91
|
+
column?: string;
|
|
92
|
+
}): Plugin;
|
|
93
|
+
//#endregion
|
|
94
|
+
//#region src/plugins/timestamps.d.ts
|
|
95
|
+
/**
|
|
96
|
+
* Plugin that automatically sets `createdAt` and `updatedAt` timestamps.
|
|
97
|
+
*
|
|
98
|
+
* ```ts
|
|
99
|
+
* const User = defineModel('users', { columns: { ...t.timestamps() } })
|
|
100
|
+
* .use(timestamps())
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
declare function timestamps(opts?: {
|
|
104
|
+
createdAt?: string;
|
|
105
|
+
updatedAt?: string;
|
|
106
|
+
}): Plugin;
|
|
107
|
+
//#endregion
|
|
108
|
+
//#region src/plugins/ulid.d.ts
|
|
109
|
+
/**
|
|
110
|
+
* Plugin that auto-generates ULID primary keys on `beforeCreate`.
|
|
111
|
+
*
|
|
112
|
+
* Requires the model's `id` column to be `t.string(26).primaryKey()`.
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```ts
|
|
116
|
+
* const User = defineModel("users", {
|
|
117
|
+
* columns: { id: t.string(26).primaryKey() }
|
|
118
|
+
* }).use(ulid())
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
declare function ulid(): Plugin;
|
|
122
|
+
//#endregion
|
|
123
|
+
//#region src/relations/has-many.d.ts
|
|
124
|
+
declare function hasMany(relatedThunk: () => ModelDefinition, options?: RelationOptions): Relation;
|
|
125
|
+
declare function hasOne(relatedThunk: () => ModelDefinition, options?: RelationOptions): Relation;
|
|
126
|
+
declare function belongsTo(relatedThunk: () => ModelDefinition, options?: RelationOptions): Relation;
|
|
127
|
+
//#endregion
|
|
128
|
+
//#region src/relations/many-to-many.d.ts
|
|
129
|
+
declare function manyToMany(relatedThunk: () => ModelDefinition, options: RelationOptions & {
|
|
130
|
+
through: string;
|
|
131
|
+
} & {
|
|
132
|
+
pivotExtras?: string[];
|
|
133
|
+
}): Relation;
|
|
134
|
+
declare function hasManyThrough(relatedThunk: () => ModelDefinition, throughThunk: () => ModelDefinition, options?: RelationOptions): Relation;
|
|
135
|
+
//#endregion
|
|
136
|
+
//#region src/relations/morph.d.ts
|
|
137
|
+
interface MorphToOptions {
|
|
138
|
+
/** Base name for the polymorphic relation (e.g. "commentable" → commentableType, commentableId) */
|
|
139
|
+
name: string;
|
|
140
|
+
/** Custom type column name. Default: `${name}Type` */
|
|
141
|
+
type?: string;
|
|
142
|
+
/** Custom id column name. Default: `${name}Id` */
|
|
143
|
+
id?: string;
|
|
144
|
+
/**
|
|
145
|
+
* Registry mapping type column values to model definition thunks.
|
|
146
|
+
* Example: { posts: () => Post, videos: () => Video }
|
|
147
|
+
* This is required for runtime resolution.
|
|
148
|
+
*/
|
|
149
|
+
morphMap?: Record<string, () => ModelDefinition>;
|
|
150
|
+
}
|
|
151
|
+
interface MorphManyOptions {
|
|
152
|
+
name: string;
|
|
153
|
+
related: () => ModelDefinition;
|
|
154
|
+
type?: string;
|
|
155
|
+
id?: string;
|
|
156
|
+
/**
|
|
157
|
+
* The value stored in the type column for this parent model.
|
|
158
|
+
* Should be unique per parent model type (e.g. the parent's table name).
|
|
159
|
+
* If omitted, defaults to the child's table name (the `related` model's table).
|
|
160
|
+
*/
|
|
161
|
+
typeValue?: string;
|
|
162
|
+
}
|
|
163
|
+
interface MorphOneOptions {
|
|
164
|
+
name: string;
|
|
165
|
+
related: () => ModelDefinition;
|
|
166
|
+
type?: string;
|
|
167
|
+
id?: string;
|
|
168
|
+
typeValue?: string;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Resolve the related model for a MorphTo relation given a parent instance.
|
|
172
|
+
* Looks up the parent's `{name}Type` column value in the relation's morphMap
|
|
173
|
+
* and returns the corresponding ModelDefinition.
|
|
174
|
+
*
|
|
175
|
+
* Returns `undefined` if the type column is null, the morph map entry is
|
|
176
|
+
* missing, or the relation is not a morphTo.
|
|
177
|
+
*/
|
|
178
|
+
declare function resolveMorphRelation(relation: Relation, parent: ModelInstance): ModelDefinition | undefined;
|
|
179
|
+
/**
|
|
180
|
+
* Define a polymorphic belongsTo relationship.
|
|
181
|
+
*
|
|
182
|
+
* Requires a `morphMap` to resolve the related model class at runtime
|
|
183
|
+
* based on the value of the type column.
|
|
184
|
+
*
|
|
185
|
+
* ### Usage
|
|
186
|
+
* ```ts
|
|
187
|
+
* Comment.relations.commentable = defineMorphTo({
|
|
188
|
+
* name: "commentable",
|
|
189
|
+
* morphMap: {
|
|
190
|
+
* posts: () => Post,
|
|
191
|
+
* videos: () => Video,
|
|
192
|
+
* },
|
|
193
|
+
* })
|
|
194
|
+
* ```
|
|
195
|
+
*
|
|
196
|
+
* Eager loading groups parents by type and issues one query per type:
|
|
197
|
+
* ```ts
|
|
198
|
+
* const comments = await Comment.query().with("commentable")
|
|
199
|
+
* // → SELECT * FROM comments
|
|
200
|
+
* // → SELECT * FROM posts WHERE id IN (...)
|
|
201
|
+
* // → SELECT * FROM videos WHERE id IN (...)
|
|
202
|
+
* ```
|
|
203
|
+
*/
|
|
204
|
+
declare function defineMorphTo(options: MorphToOptions): Relation;
|
|
205
|
+
/**
|
|
206
|
+
* Define a polymorphic hasMany relationship.
|
|
207
|
+
* The related table stores the parent's type and id.
|
|
208
|
+
*/
|
|
209
|
+
declare function defineMorphMany(options: MorphManyOptions): Relation;
|
|
210
|
+
/**
|
|
211
|
+
* Define a polymorphic hasOne relationship.
|
|
212
|
+
*/
|
|
213
|
+
declare function defineMorphOne(options: MorphOneOptions): Relation;
|
|
214
|
+
//#endregion
|
|
215
|
+
export { Attribute, type Collection, type Column, type ColumnShape, type ColumnTypes, type ColumnValue, type Constraint, DatabaseError, type DatabaseErrorCode, type HookCallback, type HookManager, type InsertGraphOptions, type LifecycleEvent, type ModelConfig, type ModelDefinition, type ModelId, type ModelInstance, ModelNotFoundError, ModelNotRegisteredError, type MorphManyOptions, type MorphOneOptions, type MorphToOptions, type ORMConfig, type ORMLike, type PaginatedResult, type Paginator, type PaginatorJson, type Plugin, type QueryBuilder, type Relation, RelationNotAllowedError, RelationNotFoundError, type RelationOptions, type RelationType, type SchemaConfig, type UpsertGraphOptions, ValidationError, belongsTo, createArkTypeSchemaConfig, createCollection, createColumn, createHookManager, createORM, createORM as createPeta, createPaginator, createQueryBuilder, defineModel, defineMorphMany, defineMorphOne, defineMorphTo, hasMany, hasManyThrough, hasOne, manyToMany, normalizeError, resolveMorphRelation, softDeletes, t, timestamps, ulid };
|