kysely-repo-kit 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/dist/base.d.ts ADDED
@@ -0,0 +1,229 @@
1
+ import { type ExpressionBuilder, type ExpressionWrapper, type Insertable, type Kysely, type Selectable, type Transaction, type Updateable } from "kysely";
2
+ type Primitive = string | number | boolean | Date | null | undefined;
3
+ type JsonPathLeaves<T, Prefix extends string = ""> = T extends Primitive ? never : {
4
+ [K in keyof T & string]: NonNullable<T[K]> extends Primitive ? `${Prefix}${K}` : `${Prefix}${K}` | JsonPathLeaves<NonNullable<T[K]>, `${Prefix}${K}.`>;
5
+ }[keyof T & string];
6
+ type ObjectColumnKeys<Row> = {
7
+ [K in keyof Row & string]: NonNullable<Row[K]> extends object ? K : never;
8
+ }[keyof Row & string];
9
+ export type JsonbFilterKey<Row> = {
10
+ [K in ObjectColumnKeys<Row>]: NonNullable<Row[K]> extends object ? `${K}.${JsonPathLeaves<NonNullable<Row[K]>>}` : never;
11
+ }[ObjectColumnKeys<Row>];
12
+ export type JsonbWhereFilter<Row> = {
13
+ [K in JsonbFilterKey<Row>]?: StringFilter | NumberFilter | boolean | string | number | null;
14
+ };
15
+ export type StringMode = "default" | "insensitive";
16
+ export interface StringFilter {
17
+ equals?: string;
18
+ not?: string | null;
19
+ in?: string[];
20
+ notIn?: string[];
21
+ contains?: string;
22
+ startsWith?: string;
23
+ endsWith?: string;
24
+ mode?: StringMode;
25
+ }
26
+ export interface NumberFilter {
27
+ equals?: number;
28
+ not?: number | null;
29
+ in?: number[];
30
+ notIn?: number[];
31
+ gt?: number;
32
+ gte?: number;
33
+ lt?: number;
34
+ lte?: number;
35
+ }
36
+ export interface DateFilter {
37
+ equals?: Date;
38
+ not?: Date | null;
39
+ gt?: Date;
40
+ gte?: Date;
41
+ lt?: Date;
42
+ lte?: Date;
43
+ }
44
+ export type InferTable<DB, TableName extends keyof DB & string> = DB[TableName] extends object ? DB[TableName] : never;
45
+ export type FieldFilter<V> = V extends string ? V | StringFilter | null : V extends number ? V | NumberFilter | null : V extends Date ? V | DateFilter | null : V extends boolean ? V | null : V | null;
46
+ export type WhereFilter<DB, TableName extends keyof DB & string, Row = InferTable<DB, TableName>> = {
47
+ [K in keyof Selectable<Row>]?: FieldFilter<Selectable<Row>[K]>;
48
+ } & {
49
+ AND?: WhereFilter<DB, TableName, Row>[];
50
+ OR?: WhereFilter<DB, TableName, Row>[];
51
+ NOT?: WhereFilter<DB, TableName, Row>;
52
+ jsonb?: JsonbWhereFilter<Selectable<Row>>;
53
+ _raw?: (eb: ExpressionBuilder<DB, TableName>) => ExpressionWrapper<DB, TableName, unknown>;
54
+ };
55
+ export interface PopulationDefinition<DB, TRelated, TRelatedPopulations extends PopulationMap<DB> = Record<never, never>> {
56
+ table: keyof DB & string;
57
+ foreignKey: string;
58
+ localKey?: string;
59
+ justOne?: true;
60
+ softDeleteColumn?: string;
61
+ readonly _type?: TRelated;
62
+ readonly _nestedPopulations?: () => TRelatedPopulations;
63
+ }
64
+ export type PopulationMap<DB> = Record<string, PopulationDefinition<DB, any, any>>;
65
+ type RelatedType<Def extends PopulationDefinition<any, any, any>> = NonNullable<Def["_type"]>;
66
+ type RelatedPops<Def extends PopulationDefinition<any, any, any>> = NonNullable<ReturnType<NonNullable<Def["_nestedPopulations"]>>>;
67
+ type PopulateKeyOption<DB, Def extends PopulationDefinition<DB, any, any>> = [keyof RelatedPops<Def>] extends [never] ? true | {
68
+ select?: SelectInput<RelatedType<Def>>;
69
+ where?: WhereFilter<DB, Def["table"] & string>;
70
+ orderBy?: OrderByInput<RelatedType<Def>>;
71
+ } : true | {
72
+ select?: SelectInput<RelatedType<Def>>;
73
+ where?: WhereFilter<DB, Def["table"] & string>;
74
+ orderBy?: OrderByInput<RelatedType<Def>>;
75
+ populate?: PopulateInput<DB, RelatedPops<Def>>;
76
+ };
77
+ type ResolvePopulatedKey<DB, Def extends PopulationDefinition<DB, any, any>, Opt> = Opt extends {
78
+ populate: infer NestedP;
79
+ } ? NestedP extends PopulateInput<DB, RelatedPops<Def>> ? Def["justOne"] extends true ? WithPopulated<DB, RelatedType<Def>, RelatedPops<Def>, NestedP> | null : WithPopulated<DB, RelatedType<Def>, RelatedPops<Def>, NestedP>[] : never : Def["justOne"] extends true ? RelatedType<Def> | null : RelatedType<Def>[];
80
+ export type WithPopulated<DB, Row, Populations extends PopulationMap<DB>, P extends PopulateInput<DB, Populations>> = Selectable<Row> & {
81
+ [K in keyof P & keyof Populations]: ResolvePopulatedKey<DB, Populations[K], P[K]>;
82
+ };
83
+ export type SelectInput<Row> = {
84
+ [K in keyof Row]?: boolean;
85
+ };
86
+ export type OrderByInput<Row> = {
87
+ [K in keyof Row]?: "asc" | "desc";
88
+ } | {
89
+ [K in keyof Row]?: "asc" | "desc";
90
+ }[];
91
+ export type PopulateInput<DB, Populations extends PopulationMap<DB>> = {
92
+ [K in keyof Populations]?: PopulateKeyOption<DB, Populations[K]>;
93
+ };
94
+ declare function applyWhere(q: any, tableName: string, filter: Record<string, unknown>): any;
95
+ export default class BaseRepository<DB, TableName extends keyof DB & string, Populations extends PopulationMap<DB> = Record<never, never>, Table extends object = InferTable<DB, TableName>> {
96
+ protected readonly db: Kysely<DB>;
97
+ protected readonly tableName: TableName;
98
+ protected readonly transaction?: Transaction<DB>;
99
+ protected readonly populations: Populations;
100
+ protected readonly softDeleteColumn?: keyof Table & string;
101
+ constructor({ db, tableName, transaction, populations, softDeleteColumn, }: {
102
+ db: Kysely<DB>;
103
+ tableName: TableName;
104
+ transaction?: Transaction<DB>;
105
+ populations?: Populations;
106
+ softDeleteColumn?: keyof Table & string;
107
+ });
108
+ protected get executor(): Kysely<DB>;
109
+ withSession(transaction: Transaction<DB>): this;
110
+ applyWhere: typeof applyWhere;
111
+ protected beforeCreate(data: Insertable<DB[TableName]>): Promise<Insertable<DB[TableName]>>;
112
+ protected afterCreate(row: Selectable<Table>): Promise<Selectable<Table>>;
113
+ protected beforeUpdate(data: Updateable<DB[TableName]>, where: WhereFilter<DB, TableName, Table>): Promise<Updateable<DB[TableName]>>;
114
+ protected afterUpdate(row: Selectable<Table> | null): Promise<Selectable<Table> | null>;
115
+ protected beforeDelete(_where: WhereFilter<DB, TableName, Table>): Promise<void>;
116
+ protected afterDelete(row: Selectable<Table> | null): Promise<Selectable<Table> | null>;
117
+ findMany<P extends PopulateInput<DB, Populations> = Record<never, never>>({ where, select, populate, skip, take, orderBy, lock, includeDeleted, }?: {
118
+ where?: WhereFilter<DB, TableName, Table>;
119
+ select?: SelectInput<Table>;
120
+ populate?: P;
121
+ skip?: number;
122
+ take?: number;
123
+ orderBy?: OrderByInput<Table>;
124
+ lock?: "update" | "share";
125
+ includeDeleted?: boolean;
126
+ }): Promise<WithPopulated<DB, Table, Populations, P>[]>;
127
+ findFirst<P extends PopulateInput<DB, Populations> = Record<never, never>>({ where, select, populate, lock, includeDeleted, }?: {
128
+ where?: WhereFilter<DB, TableName, Table>;
129
+ select?: SelectInput<Table>;
130
+ populate?: P;
131
+ lock?: "update" | "share";
132
+ includeDeleted?: boolean;
133
+ }): Promise<WithPopulated<DB, Table, Populations, P> | null>;
134
+ findUnique<P extends PopulateInput<DB, Populations> = Record<never, never>>({ where, select, populate, includeDeleted, }: {
135
+ where: {
136
+ id: string | number;
137
+ } & Partial<WhereFilter<DB, TableName, Table>>;
138
+ select?: SelectInput<Table>;
139
+ populate?: P;
140
+ includeDeleted?: boolean;
141
+ }): Promise<WithPopulated<DB, Table, Populations, P> | null>;
142
+ create({ data, select, }: {
143
+ data: Insertable<DB[TableName]>;
144
+ select?: SelectInput<Table>;
145
+ }): Promise<Selectable<Table>>;
146
+ createMany({ data }: {
147
+ data: Insertable<DB[TableName]>[];
148
+ }): Promise<Selectable<Table>[]>;
149
+ update({ where, data, select, }: {
150
+ where: WhereFilter<DB, TableName, Table>;
151
+ data: Updateable<DB[TableName]>;
152
+ select?: SelectInput<Table>;
153
+ }): Promise<Selectable<Table> | null>;
154
+ updateUnique({ where, data, select, }: {
155
+ where: {
156
+ id: string | number;
157
+ };
158
+ data: Updateable<DB[TableName]>;
159
+ select?: SelectInput<Table>;
160
+ }): Promise<Selectable<Table> | null>;
161
+ updateMany({ where, data, }: {
162
+ where: WhereFilter<DB, TableName, Table>;
163
+ data: Updateable<DB[TableName]>;
164
+ }): Promise<number>;
165
+ upsert({ where, create, update, }: {
166
+ where: WhereFilter<DB, TableName, Table>;
167
+ create: Insertable<DB[TableName]>;
168
+ update: Updateable<DB[TableName]>;
169
+ }): Promise<Selectable<Table>[]>;
170
+ hardDelete({ where }: {
171
+ where: WhereFilter<DB, TableName, Table>;
172
+ }): Promise<Selectable<Table> | null>;
173
+ delete(args: {
174
+ where: WhereFilter<DB, TableName, Table>;
175
+ }): Promise<Selectable<Table> | null>;
176
+ softDelete({ where, deletedAt, }: {
177
+ where: WhereFilter<DB, TableName, Table>;
178
+ deletedAt?: Date;
179
+ }): Promise<Selectable<Table> | null>;
180
+ deleteUnique({ where }: {
181
+ where: {
182
+ id: string | number;
183
+ };
184
+ }): Promise<Selectable<Table> | null>;
185
+ deleteMany({ where }: {
186
+ where: WhereFilter<DB, TableName, Table>;
187
+ }): Promise<number>;
188
+ count({ where, includeDeleted, }?: {
189
+ where?: WhereFilter<DB, TableName, Table>;
190
+ includeDeleted?: boolean;
191
+ }): Promise<number>;
192
+ exists(args?: {
193
+ where?: WhereFilter<DB, TableName, Table>;
194
+ includeDeleted?: boolean;
195
+ }): Promise<boolean>;
196
+ protected returning(q: any, select?: SelectInput<Table>, orThrow?: boolean): Promise<Selectable<Table> | null>;
197
+ protected applySelect(q: any, select?: SelectInput<Table>): any;
198
+ protected applyOrderBy(q: any, orderBy: OrderByInput<Table>): any;
199
+ protected withSoftDeleteFilter(where: Record<string, any>, includeDeleted: boolean): Record<string, any>;
200
+ protected isSoftDeletableTable(): boolean;
201
+ private softDeleteRaw;
202
+ protected applyPopulate<P extends PopulateInput<DB, Populations>>(q: any, populate: P): any;
203
+ protected fixPopulatedKeys<P extends PopulateInput<DB, Populations>>(rows: any[], populate?: P): any[];
204
+ }
205
+ type EnsureSelectable<T> = T extends any[] ? T : Selectable<T>;
206
+ export declare function definePopulation<DB, TRelated>(def: Omit<PopulationDefinition<DB, EnsureSelectable<TRelated>>, "_type" | "_nestedPopulations"> & {
207
+ justOne: true;
208
+ }): PopulationDefinition<DB, EnsureSelectable<TRelated>> & {
209
+ justOne: true;
210
+ };
211
+ export declare function definePopulation<DB, TRelated>(def: Omit<PopulationDefinition<DB, EnsureSelectable<TRelated>>, "_type" | "_nestedPopulations"> & {
212
+ justOne?: never;
213
+ }): PopulationDefinition<DB, EnsureSelectable<TRelated>> & {
214
+ justOne?: never;
215
+ };
216
+ export declare function definePopulation<DB, TRelated, TRelatedPops extends PopulationMap<DB>>(def: Omit<PopulationDefinition<DB, EnsureSelectable<TRelated>, TRelatedPops>, "_type" | "_nestedPopulations"> & {
217
+ justOne: true;
218
+ nestedPopulations: () => TRelatedPops;
219
+ }): PopulationDefinition<DB, EnsureSelectable<TRelated>, TRelatedPops> & {
220
+ justOne: true;
221
+ };
222
+ export declare function definePopulation<DB, TRelated, TRelatedPops extends PopulationMap<DB>>(def: Omit<PopulationDefinition<DB, EnsureSelectable<TRelated>, TRelatedPops>, "_type" | "_nestedPopulations"> & {
223
+ justOne?: never;
224
+ nestedPopulations: () => TRelatedPops;
225
+ }): PopulationDefinition<DB, EnsureSelectable<TRelated>, TRelatedPops> & {
226
+ justOne?: never;
227
+ };
228
+ export {};
229
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"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"}
package/dist/base.js ADDED
@@ -0,0 +1,544 @@
1
+ import { sql, } from "kysely";
2
+ import { jsonArrayFrom, jsonObjectFrom } from "kysely/helpers/postgres";
3
+ function snakeToCamel(s) {
4
+ return s.replace(/_([a-z])/g, (_, c) => c.toUpperCase());
5
+ }
6
+ function camelCaseKeys(val) {
7
+ if (Array.isArray(val))
8
+ return val.map(camelCaseKeys);
9
+ if (val !== null && typeof val === "object") {
10
+ return Object.fromEntries(Object.entries(val).map(([k, v]) => [snakeToCamel(k), camelCaseKeys(v)]));
11
+ }
12
+ return val;
13
+ }
14
+ function fieldOps(col, f, insensitive) {
15
+ const ops = [];
16
+ const iCol = sql `lower(${sql.ref(col)})`;
17
+ if ("equals" in f)
18
+ ops.push([col, "=", f.equals]);
19
+ if ("not" in f)
20
+ ops.push(f.not === null ? [col, "is not", null] : [col, "!=", f.not]);
21
+ if ("in" in f)
22
+ ops.push([col, "in", f.in]);
23
+ if ("notIn" in f)
24
+ ops.push([col, "not in", f.notIn]);
25
+ if ("gt" in f)
26
+ ops.push([col, ">", f.gt]);
27
+ if ("gte" in f)
28
+ ops.push([col, ">=", f.gte]);
29
+ if ("lt" in f)
30
+ ops.push([col, "<", f.lt]);
31
+ if ("lte" in f)
32
+ ops.push([col, "<=", f.lte]);
33
+ if ("contains" in f) {
34
+ const v = f.contains;
35
+ ops.push(insensitive ? [iCol, "like", `%${v.toLowerCase()}%`] : [col, "like", `%${v}%`]);
36
+ }
37
+ if ("startsWith" in f) {
38
+ const v = f.startsWith;
39
+ ops.push(insensitive ? [iCol, "like", `${v.toLowerCase()}%`] : [col, "like", `${v}%`]);
40
+ }
41
+ if ("endsWith" in f) {
42
+ const v = f.endsWith;
43
+ ops.push(insensitive ? [iCol, "like", `%${v.toLowerCase()}`] : [col, "like", `%${v}`]);
44
+ }
45
+ return ops;
46
+ }
47
+ function jsonbTextExpr(tableName, path) {
48
+ const [column, ...jsonPath] = path.split(".");
49
+ if (!column || jsonPath.length === 0)
50
+ throw new Error(`Invalid jsonb path: ${path}`);
51
+ const pgPath = `{${jsonPath.join(",")}}`;
52
+ return sql `${sql.ref(`${tableName}.${column}`)} #>> ${pgPath}`;
53
+ }
54
+ function buildExpr(eb, tableName, filter) {
55
+ const parts = [];
56
+ for (const [key, value] of Object.entries(filter)) {
57
+ if (key === "AND") {
58
+ parts.push(eb.and(value.map(sub => buildExpr(eb, tableName, sub))));
59
+ }
60
+ else if (key === "OR") {
61
+ parts.push(eb.or(value.map(sub => buildExpr(eb, tableName, sub))));
62
+ }
63
+ else if (key === "NOT") {
64
+ parts.push(eb.not(buildExpr(eb, tableName, value)));
65
+ }
66
+ else if (key === "jsonb") {
67
+ for (const [path, rawValue] of Object.entries(value)) {
68
+ const expr = jsonbTextExpr(tableName, path);
69
+ if (rawValue === null) {
70
+ parts.push(sql `${expr} is null`);
71
+ }
72
+ else if (typeof rawValue !== "object" || rawValue instanceof Date) {
73
+ parts.push(sql `${expr} = ${String(rawValue)}`);
74
+ }
75
+ else {
76
+ const f = rawValue;
77
+ const insensitive = f.mode === "insensitive";
78
+ if ("equals" in f) {
79
+ parts.push(insensitive
80
+ ? sql `lower(${expr}) = lower(${String(f.equals)})`
81
+ : sql `${expr} = ${String(f.equals)}`);
82
+ }
83
+ if ("not" in f) {
84
+ parts.push(f.not === null
85
+ ? sql `${expr} is not null`
86
+ : insensitive
87
+ ? sql `lower(${expr}) != lower(${String(f.not)})`
88
+ : sql `${expr} != ${String(f.not)}`);
89
+ }
90
+ if ("contains" in f) {
91
+ const v = String(f.contains);
92
+ parts.push(insensitive
93
+ ? sql `lower(${expr}) like ${`%${v.toLowerCase()}%`}`
94
+ : sql `${expr} like ${`%${v}%`}`);
95
+ }
96
+ if ("startsWith" in f) {
97
+ const v = String(f.startsWith);
98
+ parts.push(insensitive
99
+ ? sql `lower(${expr}) like ${`${v.toLowerCase()}%`}`
100
+ : sql `${expr} like ${`${v}%`}`);
101
+ }
102
+ if ("endsWith" in f) {
103
+ const v = String(f.endsWith);
104
+ parts.push(insensitive
105
+ ? sql `lower(${expr}) like ${`%${v.toLowerCase()}`}`
106
+ : sql `${expr} like ${`%${v}`}`);
107
+ }
108
+ if ("in" in f)
109
+ parts.push(sql `${expr} in ${sql.join(f.in.map(String))}`);
110
+ if ("notIn" in f) {
111
+ parts.push(sql `${expr} not in ${sql.join(f.notIn.map(String))}`);
112
+ }
113
+ }
114
+ }
115
+ }
116
+ else if (key === "_raw") {
117
+ parts.push(value(eb));
118
+ }
119
+ else {
120
+ const col = `${tableName}.${key}`;
121
+ if (value === null) {
122
+ parts.push(eb(col, "is", null));
123
+ }
124
+ else if (typeof value !== "object" || value instanceof Date) {
125
+ parts.push(eb(col, "=", value));
126
+ }
127
+ else {
128
+ const f = value;
129
+ for (const [c, op, val] of fieldOps(col, f, f.mode === "insensitive")) {
130
+ parts.push(eb(c, op, val));
131
+ }
132
+ }
133
+ }
134
+ }
135
+ return parts.length === 1 ? parts[0] : eb.and(parts);
136
+ }
137
+ function applyWhere(q, tableName, filter) {
138
+ for (const [key, value] of Object.entries(filter)) {
139
+ if (key === "AND") {
140
+ for (const sub of value)
141
+ q = q.where((eb) => buildExpr(eb, tableName, sub));
142
+ }
143
+ else if (key === "OR") {
144
+ q = q.where((eb) => eb.or(value.map(sub => buildExpr(eb, tableName, sub))));
145
+ }
146
+ else if (key === "NOT") {
147
+ q = q.where((eb) => eb.not(buildExpr(eb, tableName, value)));
148
+ }
149
+ else if (key === "jsonb") {
150
+ for (const [path, rawValue] of Object.entries(value)) {
151
+ const expr = jsonbTextExpr(tableName, path);
152
+ if (rawValue === null) {
153
+ q = q.where(sql `${expr} is null`);
154
+ }
155
+ else if (typeof rawValue !== "object" || rawValue instanceof Date) {
156
+ q = q.where(sql `${expr} = ${String(rawValue)}`);
157
+ }
158
+ else {
159
+ const f = rawValue;
160
+ const insensitive = f.mode === "insensitive";
161
+ if ("equals" in f) {
162
+ q = q.where(insensitive
163
+ ? sql `lower(${expr}) = lower(${String(f.equals)})`
164
+ : sql `${expr} = ${String(f.equals)}`);
165
+ }
166
+ if ("not" in f) {
167
+ q =
168
+ f.not === null
169
+ ? q.where(sql `${expr} is not null`)
170
+ : q.where(insensitive
171
+ ? sql `lower(${expr}) != lower(${String(f.not)})`
172
+ : sql `${expr} != ${String(f.not)}`);
173
+ }
174
+ if ("contains" in f) {
175
+ const v = String(f.contains);
176
+ q = q.where(insensitive
177
+ ? sql `lower(${expr}) like ${`%${v.toLowerCase()}%`}`
178
+ : sql `${expr} like ${`%${v}%`}`);
179
+ }
180
+ if ("startsWith" in f) {
181
+ const v = String(f.startsWith);
182
+ q = q.where(insensitive
183
+ ? sql `lower(${expr}) like ${`${v.toLowerCase()}%`}`
184
+ : sql `${expr} like ${`${v}%`}`);
185
+ }
186
+ if ("endsWith" in f) {
187
+ const v = String(f.endsWith);
188
+ q = q.where(insensitive
189
+ ? sql `lower(${expr}) like ${`%${v.toLowerCase()}`}`
190
+ : sql `${expr} like ${`%${v}`}`);
191
+ }
192
+ if ("in" in f)
193
+ q = q.where(expr, "in", f.in.map(String));
194
+ if ("notIn" in f)
195
+ q = q.where(expr, "not in", f.notIn.map(String));
196
+ }
197
+ }
198
+ }
199
+ else if (key === "_raw") {
200
+ q = q.where((eb) => value(eb));
201
+ }
202
+ else {
203
+ const col = `${tableName}.${key}`;
204
+ if (value === null) {
205
+ q = q.where(col, "is", null);
206
+ }
207
+ else if (typeof value !== "object" || value instanceof Date) {
208
+ q = q.where(col, "=", value);
209
+ }
210
+ else {
211
+ const f = value;
212
+ for (const [c, op, val] of fieldOps(col, f, f.mode === "insensitive")) {
213
+ q = q.where(c, op, val);
214
+ }
215
+ }
216
+ }
217
+ }
218
+ return q;
219
+ }
220
+ export default class BaseRepository {
221
+ db;
222
+ tableName;
223
+ transaction;
224
+ populations;
225
+ softDeleteColumn;
226
+ constructor({ db, tableName, transaction, populations, softDeleteColumn, }) {
227
+ this.db = db;
228
+ this.tableName = tableName;
229
+ this.transaction = transaction;
230
+ this.populations = (populations ?? {});
231
+ this.softDeleteColumn = softDeleteColumn;
232
+ }
233
+ get executor() {
234
+ const exec = this.transaction || this.db;
235
+ if (!exec)
236
+ throw new Error(`Executor not found for table ${this.tableName}. Check if db is initialized.`);
237
+ return exec;
238
+ }
239
+ withSession(transaction) {
240
+ const clone = Object.create(Object.getPrototypeOf(this));
241
+ Object.assign(clone, this, { transaction });
242
+ return clone;
243
+ }
244
+ applyWhere = applyWhere;
245
+ async beforeCreate(data) {
246
+ return data;
247
+ }
248
+ async afterCreate(row) {
249
+ return row;
250
+ }
251
+ async beforeUpdate(data, where) {
252
+ return data;
253
+ }
254
+ async afterUpdate(row) {
255
+ return row;
256
+ }
257
+ async beforeDelete(_where) { }
258
+ async afterDelete(row) {
259
+ return row;
260
+ }
261
+ async findMany({ where = {}, select, populate, skip = 0, take = 200, orderBy, lock, includeDeleted = false, } = {}) {
262
+ let q = this.executor.selectFrom(this.tableName);
263
+ q = applyWhere(q, this.tableName, this.withSoftDeleteFilter(where, includeDeleted));
264
+ q = q.offset(skip).limit(take);
265
+ if (orderBy)
266
+ q = this.applyOrderBy(q, orderBy);
267
+ q = this.applySelect(q, select);
268
+ if (populate)
269
+ q = this.applyPopulate(q, populate);
270
+ if (lock === "update")
271
+ q = q.forUpdate();
272
+ else if (lock === "share")
273
+ q = q.forShare();
274
+ return this.fixPopulatedKeys(await q.execute(), populate);
275
+ }
276
+ async findFirst({ where = {}, select, populate, lock, includeDeleted = false, } = {}) {
277
+ let q = this.executor.selectFrom(this.tableName);
278
+ q = applyWhere(q, this.tableName, this.withSoftDeleteFilter(where, includeDeleted));
279
+ q = this.applySelect(q, select);
280
+ if (populate)
281
+ q = this.applyPopulate(q, populate);
282
+ if (lock === "update")
283
+ q = q.forUpdate();
284
+ else if (lock === "share")
285
+ q = q.forShare();
286
+ const row = await q.executeTakeFirst();
287
+ if (!row)
288
+ return null;
289
+ const [result] = this.fixPopulatedKeys([row], populate);
290
+ return result ?? null;
291
+ }
292
+ async findUnique({ where, select, populate, includeDeleted = false, }) {
293
+ let q = this.executor.selectFrom(this.tableName).where(`${this.tableName}.id`, "=", where.id);
294
+ if (this.isSoftDeletableTable() && !includeDeleted) {
295
+ q = q.where(`${this.tableName}.${this.softDeleteColumn}`, "is", null);
296
+ }
297
+ q = this.applySelect(q, select);
298
+ if (populate)
299
+ q = this.applyPopulate(q, populate);
300
+ const row = await q.executeTakeFirst();
301
+ if (!row)
302
+ return null;
303
+ const [result] = this.fixPopulatedKeys([row], populate);
304
+ return result ?? null;
305
+ }
306
+ async create({ data, select, }) {
307
+ const processedData = await this.beforeCreate(data);
308
+ const q = this.executor.insertInto(this.tableName).values(processedData);
309
+ const row = (await this.returning(q, select, true));
310
+ return this.afterCreate(row);
311
+ }
312
+ async createMany({ data }) {
313
+ const processedData = await Promise.all(data.map(item => this.beforeCreate(item)));
314
+ return (await this.executor
315
+ .insertInto(this.tableName)
316
+ .values(processedData)
317
+ .returningAll()
318
+ .execute());
319
+ }
320
+ async update({ where, data, select, }) {
321
+ const processedData = await this.beforeUpdate(data, where);
322
+ let q = this.executor.updateTable(this.tableName).set(processedData);
323
+ q = applyWhere(q, this.tableName, where);
324
+ const row = await this.returning(q, select);
325
+ return this.afterUpdate(row);
326
+ }
327
+ async updateUnique({ where, data, select, }) {
328
+ const processedData = await this.beforeUpdate(data, { id: where.id });
329
+ const q = this.executor.updateTable(this.tableName)
330
+ .set(processedData)
331
+ .where(`${this.tableName}.id`, "=", where.id);
332
+ const row = await this.returning(q, select);
333
+ return this.afterUpdate(row);
334
+ }
335
+ async updateMany({ where, data, }) {
336
+ let q = this.executor.updateTable(this.tableName).set(data);
337
+ q = applyWhere(q, this.tableName, where);
338
+ return Number((await q.executeTakeFirst()).numUpdatedRows);
339
+ }
340
+ async upsert({ where, create, update, }) {
341
+ const processedCreate = await this.beforeCreate(create);
342
+ const processedUpdate = await this.beforeUpdate(update, where);
343
+ return (await this.executor
344
+ .insertInto(this.tableName)
345
+ .values({ ...where, ...processedCreate })
346
+ .onConflict(oc => oc.columns(Object.keys(where)).doUpdateSet(processedUpdate))
347
+ .returningAll()
348
+ .execute());
349
+ }
350
+ async hardDelete({ where }) {
351
+ await this.beforeDelete(where);
352
+ const q = applyWhere(this.executor.deleteFrom(this.tableName), this.tableName, where);
353
+ const row = (await q.returningAll().executeTakeFirst()) ?? null;
354
+ return this.afterDelete(row);
355
+ }
356
+ async delete(args) {
357
+ if (this.isSoftDeletableTable())
358
+ return this.softDelete(args);
359
+ return this.hardDelete(args);
360
+ }
361
+ async softDelete({ where, deletedAt = new Date(), }) {
362
+ if (!this.softDeleteColumn) {
363
+ throw new Error(`Soft delete is not enabled for table ${this.tableName}`);
364
+ }
365
+ await this.beforeDelete(where);
366
+ const q = applyWhere(this.executor.updateTable(this.tableName), this.tableName, where).set({
367
+ [this.softDeleteColumn]: deletedAt,
368
+ });
369
+ const row = (await q.returningAll().executeTakeFirst()) ?? null;
370
+ return this.afterDelete(row);
371
+ }
372
+ async deleteUnique({ where }) {
373
+ await this.beforeDelete({ id: where.id });
374
+ let row;
375
+ if (this.isSoftDeletableTable()) {
376
+ row = await this.softDeleteRaw({ where: { id: where.id } });
377
+ }
378
+ else {
379
+ row =
380
+ (await this.executor.deleteFrom(this.tableName)
381
+ .where(`${this.tableName}.id`, "=", where.id)
382
+ .returningAll()
383
+ .executeTakeFirst()) ?? null;
384
+ }
385
+ return this.afterDelete(row);
386
+ }
387
+ async deleteMany({ where }) {
388
+ if (this.isSoftDeletableTable()) {
389
+ return this.updateMany({
390
+ where,
391
+ data: {
392
+ [this.softDeleteColumn]: new Date(),
393
+ },
394
+ });
395
+ }
396
+ const q = applyWhere(this.executor.deleteFrom(this.tableName), this.tableName, where);
397
+ return Number((await q.executeTakeFirst()).numDeletedRows);
398
+ }
399
+ async count({ where = {}, includeDeleted = false, } = {}) {
400
+ let q = this.executor.selectFrom(this.tableName);
401
+ q = applyWhere(q, this.tableName, this.withSoftDeleteFilter(where, includeDeleted));
402
+ const result = await q.select(sql `count(*)`.as("count")).executeTakeFirst();
403
+ return parseInt(result?.count ?? "0", 10);
404
+ }
405
+ async exists(args = {}) {
406
+ return (await this.count(args)) > 0;
407
+ }
408
+ async returning(q, select, orThrow = false) {
409
+ let built;
410
+ if (select) {
411
+ const cols = Object.entries(select)
412
+ .filter(([, v]) => v)
413
+ .map(([k]) => `${this.tableName}.${k}`);
414
+ built = q.returning(cols);
415
+ }
416
+ else {
417
+ built = q.returningAll();
418
+ }
419
+ const row = orThrow ? await built.executeTakeFirstOrThrow() : await built.executeTakeFirst();
420
+ return row ?? null;
421
+ }
422
+ applySelect(q, select) {
423
+ if (!select)
424
+ return q.selectAll(this.tableName);
425
+ const cols = Object.entries(select)
426
+ .filter(([, v]) => v)
427
+ .map(([k]) => `${this.tableName}.${k}`);
428
+ return cols.length ? q.select(cols) : q.selectAll(this.tableName);
429
+ }
430
+ applyOrderBy(q, orderBy) {
431
+ const entries = Array.isArray(orderBy) ? orderBy : [orderBy];
432
+ for (const obj of entries) {
433
+ for (const [col, dir] of Object.entries(obj)) {
434
+ q = q.orderBy(`${this.tableName}.${col}`, dir);
435
+ }
436
+ }
437
+ return q;
438
+ }
439
+ withSoftDeleteFilter(where, includeDeleted) {
440
+ if (!this.softDeleteColumn || includeDeleted)
441
+ return where;
442
+ if (!where || Object.keys(where).length === 0) {
443
+ return { [this.softDeleteColumn]: null };
444
+ }
445
+ return {
446
+ AND: [where, { [this.softDeleteColumn]: null }],
447
+ };
448
+ }
449
+ isSoftDeletableTable() {
450
+ return Boolean(this.softDeleteColumn);
451
+ }
452
+ async softDeleteRaw({ where, deletedAt = new Date(), }) {
453
+ if (!this.softDeleteColumn) {
454
+ throw new Error(`Soft delete is not enabled for table ${this.tableName}`);
455
+ }
456
+ const q = applyWhere(this.executor.updateTable(this.tableName), this.tableName, where).set({
457
+ [this.softDeleteColumn]: deletedAt,
458
+ });
459
+ return (await q.returningAll().executeTakeFirst()) ?? null;
460
+ }
461
+ applyPopulate(q, populate) {
462
+ return applyPopulateInner(q, this.tableName, this.populations, populate, 0, [this.tableName]);
463
+ }
464
+ fixPopulatedKeys(rows, populate) {
465
+ if (!populate || !rows.length)
466
+ return rows;
467
+ const keys = Object.keys(populate).filter(k => populate[k]);
468
+ if (!keys.length)
469
+ return rows;
470
+ return rows.map(row => {
471
+ if (!row)
472
+ return row;
473
+ const result = { ...row };
474
+ for (const key of keys) {
475
+ if (result[key] != null)
476
+ result[key] = camelCaseKeys(result[key]);
477
+ }
478
+ return result;
479
+ });
480
+ }
481
+ }
482
+ const POPULATE_MAX_DEPTH = 3;
483
+ function applyPopulateInner(q, parentTableName, populations, populate, depth, visitedPath) {
484
+ if (depth > POPULATE_MAX_DEPTH)
485
+ return q;
486
+ for (const key of Object.keys(populate).filter(k => populate[k])) {
487
+ const def = populations[key];
488
+ if (!def)
489
+ continue;
490
+ const popOptions = populate[key];
491
+ const { table, foreignKey, localKey = "id", justOne, _nestedPopulations, softDeleteColumn } = def;
492
+ const tableStr = String(table);
493
+ q = q.select((eb) => {
494
+ let inner = eb.selectFrom(tableStr);
495
+ if (typeof popOptions === "object" && popOptions.select) {
496
+ const cols = Object.entries(popOptions.select)
497
+ .filter(([, v]) => v)
498
+ .map(([col]) => `${tableStr}.${col}`);
499
+ inner = inner.select(cols);
500
+ }
501
+ else {
502
+ inner = inner.selectAll(tableStr);
503
+ }
504
+ inner = inner.whereRef(`${tableStr}.${foreignKey}`, "=", `${parentTableName}.${localKey}`);
505
+ if (softDeleteColumn) {
506
+ inner = inner.where(`${tableStr}.${softDeleteColumn}`, "is", null);
507
+ }
508
+ if (typeof popOptions === "object" && popOptions.where) {
509
+ inner = applyWhere(inner, tableStr, popOptions.where);
510
+ }
511
+ if (typeof popOptions === "object" && popOptions.orderBy) {
512
+ const entries = Array.isArray(popOptions.orderBy) ? popOptions.orderBy : [popOptions.orderBy];
513
+ for (const obj of entries) {
514
+ for (const [col, dir] of Object.entries(obj)) {
515
+ inner = inner.orderBy(`${tableStr}.${col}`, dir);
516
+ }
517
+ }
518
+ }
519
+ if (typeof popOptions === "object" && popOptions.populate && _nestedPopulations) {
520
+ if (visitedPath.includes(tableStr)) {
521
+ throw new Error(`Circular populate detected: ${[...visitedPath, tableStr].join(" -> ")}`);
522
+ }
523
+ const nestedPops = _nestedPopulations();
524
+ if (Object.keys(nestedPops).length > 0) {
525
+ inner = applyPopulateInner(inner, tableStr, nestedPops, popOptions.populate, depth + 1, [
526
+ ...visitedPath,
527
+ tableStr,
528
+ ]);
529
+ }
530
+ }
531
+ return (justOne ? jsonObjectFrom(inner) : jsonArrayFrom(inner)).as(key);
532
+ });
533
+ }
534
+ return q;
535
+ }
536
+ export function definePopulation(def) {
537
+ const { nestedPopulations, ...rest } = def;
538
+ return {
539
+ ...rest,
540
+ _type: undefined,
541
+ ...(nestedPopulations ? { _nestedPopulations: nestedPopulations } : {}),
542
+ };
543
+ }
544
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { Kysely, Selectable, Transaction } from "kysely";
2
+ import BaseRepository, { type InferTable, type PopulateInput, type PopulationMap } from "./base";
3
+ type EmptyPopulations = Record<never, never>;
4
+ type InferSelectableRow<DB, TableName extends keyof DB & string> = DB[TableName] extends object ? Selectable<DB[TableName]> : never;
5
+ type InferRow<DB, TableName extends keyof DB & string> = DB[TableName] extends object ? Selectable<DB[TableName]> : never;
6
+ export type RepoInstance<DB, TableName extends keyof DB & string, Populations extends PopulationMap<DB>> = BaseRepository<DB, TableName, Populations> & {
7
+ opts<P extends PopulateInput<DB, Populations> = EmptyPopulations>(): {
8
+ populate?: P;
9
+ };
10
+ };
11
+ export type RepoConstructor<DB, TableName extends keyof DB & string, Populations extends PopulationMap<DB>> = {
12
+ new (db: Kysely<DB>, transaction?: Transaction<DB>): RepoInstance<DB, TableName, Populations>;
13
+ readonly tableName: TableName;
14
+ readonly populations: Populations;
15
+ };
16
+ type PopulateConfig<DB, Name extends string, Ref extends keyof DB & string, NestedPopulations extends PopulationMap<DB> = Record<never, never>> = {
17
+ as: Name;
18
+ ref: Ref;
19
+ foreignKey?: keyof InferSelectableRow<DB, Ref> & string;
20
+ localKey?: string;
21
+ justOne?: true;
22
+ softDelete?: keyof InferSelectableRow<DB, Ref> & string;
23
+ nestedPopulations?: () => NestedPopulations;
24
+ };
25
+ declare class RepoBuilder<DB, TableName extends keyof DB & string, Populations extends PopulationMap<DB> = EmptyPopulations, Table extends object = InferTable<DB, TableName>> {
26
+ private readonly currentTableName;
27
+ private readonly currentPopulations;
28
+ private readonly currentSoftDeleteColumn?;
29
+ constructor(currentTableName: TableName, currentPopulations?: Populations, currentSoftDeleteColumn?: (keyof Selectable<Table> & string) | undefined);
30
+ softDelete<Column extends keyof Selectable<Table> & string>(column: Column): RepoBuilder<DB, TableName, Populations, Table>;
31
+ populate<Name extends string, Ref extends keyof DB & string, NestedPopulations extends PopulationMap<DB> = Record<never, never>>(def: PopulateConfig<DB, Name, Ref, NestedPopulations>): RepoBuilder<DB, TableName, Populations & Record<Name, import("./base").PopulationDefinition<DB, InferRow<DB, Ref> extends infer T ? T extends InferRow<DB, Ref> ? T extends any[] ? T : import("kysely").DrainOuterGeneric<{ [K_1 in { [K in keyof T]: import("kysely").SelectType<T[K]> extends infer T_1 ? T_1 extends import("kysely").SelectType<T[K]> ? T_1 extends never ? never : K : never : never; }[keyof T]]: import("kysely").SelectType<T[K_1]>; }> : never : never, NestedPopulations> & {
32
+ justOne: true;
33
+ }>, Table>;
34
+ get init(): RepoConstructor<DB, TableName, Populations>;
35
+ }
36
+ export declare function createRepoBuilder<DB>(): {
37
+ table<TableName extends keyof DB & string>(tableName: TableName): RepoBuilder<DB, TableName, EmptyPopulations, InferTable<DB, TableName>>;
38
+ };
39
+ export {};
40
+ //# sourceMappingURL=builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import BaseRepository, { definePopulation, } from "./base";
2
+ class RepoBuilder {
3
+ currentTableName;
4
+ currentPopulations;
5
+ currentSoftDeleteColumn;
6
+ constructor(currentTableName, currentPopulations = {}, currentSoftDeleteColumn) {
7
+ this.currentTableName = currentTableName;
8
+ this.currentPopulations = currentPopulations;
9
+ this.currentSoftDeleteColumn = currentSoftDeleteColumn;
10
+ }
11
+ softDelete(column) {
12
+ return new RepoBuilder(this.currentTableName, this.currentPopulations, column);
13
+ }
14
+ populate(def) {
15
+ const isSingle = Boolean(def.localKey || def.justOne);
16
+ const population = definePopulation({
17
+ table: def.ref,
18
+ foreignKey: def.foreignKey ?? "id",
19
+ localKey: def.localKey,
20
+ ...(isSingle ? { justOne: true } : {}),
21
+ ...(def.softDelete ? { softDeleteColumn: def.softDelete } : {}),
22
+ ...(def.nestedPopulations ? { nestedPopulations: def.nestedPopulations } : {}),
23
+ });
24
+ return new RepoBuilder(this.currentTableName, {
25
+ ...this.currentPopulations,
26
+ [def.as]: population,
27
+ }, this.currentSoftDeleteColumn);
28
+ }
29
+ get init() {
30
+ const tableName = this.currentTableName;
31
+ const populations = this.currentPopulations;
32
+ const softDeleteColumn = this.currentSoftDeleteColumn;
33
+ class GeneratedRepository extends BaseRepository {
34
+ static tableName = tableName;
35
+ static populations = populations;
36
+ constructor(db, transaction) {
37
+ super({
38
+ db,
39
+ transaction,
40
+ tableName,
41
+ populations,
42
+ softDeleteColumn: softDeleteColumn,
43
+ });
44
+ }
45
+ opts() {
46
+ return {};
47
+ }
48
+ }
49
+ return GeneratedRepository;
50
+ }
51
+ }
52
+ export function createRepoBuilder() {
53
+ return {
54
+ table(tableName) {
55
+ return new RepoBuilder(tableName);
56
+ },
57
+ };
58
+ }
59
+ //# sourceMappingURL=builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAEA,OAAO,cAAc,EAAE,EACnB,gBAAgB,GAInB,MAAM,QAAQ,CAAA;AAsDf,MAAM,WAAW;IAOQ;IACA;IACA;IAHrB,YACqB,gBAA2B,EAC3B,qBAAkC,EAAiB,EACnD,uBAA0D;QAF1D,qBAAgB,GAAhB,gBAAgB,CAAW;QAC3B,uBAAkB,GAAlB,kBAAkB,CAAiC;QACnD,4BAAuB,GAAvB,uBAAuB,CAAmC;IAC5E,CAAC;IAEJ,UAAU,CAAkD,MAAc;QACtE,OAAO,IAAI,WAAW,CAClB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,kBAAkB,EACvB,MAAM,CACT,CAAA;IACL,CAAC;IAED,QAAQ,CAIN,GAAqD;QACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;QAErD,MAAM,UAAU,GAAG,gBAAgB,CAA2C;YAC1E,KAAK,EAAE,GAAG,CAAC,GAAG;YACd,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,IAAI;YAClC,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1E,CAAC,CAAA;QAET,OAAO,IAAI,WAAW,CAMlB,IAAI,CAAC,gBAAgB,EACrB;YACI,GAAG,IAAI,CAAC,kBAAkB;YAC1B,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,UAAU;SAC0B,EAClD,IAAI,CAAC,uBAAuB,CAC/B,CAAA;IACL,CAAC;IAED,IAAI,IAAI;QACJ,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAA;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAA;QAC3C,MAAM,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAA;QAErD,MAAM,mBAAoB,SAAQ,cAIjC;YACG,MAAM,CAAU,SAAS,GAAG,SAAS,CAAA;YACrC,MAAM,CAAU,WAAW,GAAG,WAAW,CAAA;YAEzC,YAAY,EAAc,EAAE,WAA6B;gBACrD,KAAK,CAAC;oBACF,EAAE;oBACF,WAAW;oBACX,SAAS;oBACT,WAAW;oBACX,gBAAgB,EAAE,gBAAuB;iBAC5C,CAAC,CAAA;YACN,CAAC;YAED,IAAI;gBACA,OAAO,EAAsB,CAAA;YACjC,CAAC;;QAGL,OAAO,mBAAkE,CAAA;IAC7E,CAAC;CACJ;AAED,MAAM,UAAU,iBAAiB;IAC7B,OAAO;QACH,KAAK,CAAsC,SAAoB;YAC3D,OAAO,IAAI,WAAW,CAAgB,SAAS,CAAC,CAAA;QACpD,CAAC;KACJ,CAAA;AACL,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { default as BaseRepository } from "./base";
2
+ export { definePopulation, } from "./base";
3
+ export type { DateFilter, FieldFilter, InferTable, JsonbFilterKey, JsonbWhereFilter, NumberFilter, OrderByInput, PopulateInput, PopulationDefinition, PopulationMap, SelectInput, StringFilter, StringMode, WhereFilter, WithPopulated, } from "./base";
4
+ export type { RepoConstructor, RepoInstance, } from "./builder";
5
+ export { createRepoBuilder } from "./builder";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,IAAI,cAAc,EAAC,MAAM,QAAQ,CAAA;AAChD,OAAO,EACH,gBAAgB,GAEnB,MAAM,QAAQ,CAAA;AACf,YAAY,EACR,UAAU,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,aAAa,EACb,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,EACX,aAAa,GAChB,MAAM,QAAQ,CAAA;AAEf,YAAY,EACR,eAAe,EACf,YAAY,GACf,MAAM,WAAW,CAAA;AAElB,OAAO,EAAC,iBAAiB,EAAC,MAAM,WAAW,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export { default as BaseRepository } from "./base";
2
+ export { definePopulation, } from "./base";
3
+ export { createRepoBuilder } from "./builder";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,IAAI,cAAc,EAAC,MAAM,QAAQ,CAAA;AAChD,OAAO,EACH,gBAAgB,GAEnB,MAAM,QAAQ,CAAA;AAwBf,OAAO,EAAC,iBAAiB,EAAC,MAAM,WAAW,CAAA"}
package/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "kysely-repo-kit",
3
+ "version": "0.1.0",
4
+ "description": "Typed repository and populate layer for Kysely",
5
+ "type": "module",
6
+ "author": "jesulonimii",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "README.md"
18
+ ],
19
+ "scripts": {
20
+ "build": "tsc",
21
+ "prepublishOnly": "npm run build"
22
+ },
23
+ "peerDependencies": {
24
+ "kysely": "^0.28.17"
25
+ },
26
+ "devDependencies": {
27
+ "typescript": "^6.0.3",
28
+ "kysely": "^0.28.17"
29
+ }
30
+
31
+ }