@rudderjs/orm 1.0.0 → 1.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/commands/migrate.d.ts +21 -0
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +82 -1
- package/dist/commands/migrate.js.map +1 -1
- package/dist/index.d.ts +117 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +391 -64
- package/dist/index.js.map +1 -1
- package/dist/seeder.d.ts +24 -0
- package/dist/seeder.d.ts.map +1 -0
- package/dist/seeder.js +28 -0
- package/dist/seeder.js.map +1 -0
- package/package.json +2 -2
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
export type ORM = 'prisma' | 'drizzle';
|
|
2
2
|
/** Detect which ORM is installed by checking package.json dependencies. */
|
|
3
3
|
export declare function detectORM(cwd?: string): ORM | null;
|
|
4
|
+
/**
|
|
5
|
+
* Find a `database/seeders/DatabaseSeeder` file in the project root.
|
|
6
|
+
* Returns the absolute path, or null if not found. Exported for testing.
|
|
7
|
+
*/
|
|
8
|
+
export declare function findSeederFile(cwd?: string): string | null;
|
|
9
|
+
/**
|
|
10
|
+
* Detect whether `package.json` has a `prisma.seed` field configured.
|
|
11
|
+
* Used as the fallback path for Prisma projects that don't ship a Seeder class.
|
|
12
|
+
*/
|
|
13
|
+
export declare function hasPrismaSeedConfig(cwd?: string): boolean;
|
|
4
14
|
/** Build the args array for a given ORM and command. Exported for testing. */
|
|
5
15
|
export declare function buildArgs(orm: ORM, command: 'migrate' | 'migrate:fresh' | 'migrate:status' | 'make:migration' | 'db:push' | 'db:generate', options?: {
|
|
6
16
|
name?: string;
|
|
@@ -15,4 +25,15 @@ export declare function registerMigrateCommands(rudder: {
|
|
|
15
25
|
description(text: string): unknown;
|
|
16
26
|
};
|
|
17
27
|
}): void;
|
|
28
|
+
/**
|
|
29
|
+
* In-process seeder runner.
|
|
30
|
+
*
|
|
31
|
+
* Resolution order:
|
|
32
|
+
* 1. `database/seeders/DatabaseSeeder.{ts,js,mts,mjs}` — instantiate default
|
|
33
|
+
* export and call `.run()` (or `await default()` if it's a function).
|
|
34
|
+
* 2. Prisma fallback — if `package.json#prisma.seed` is configured, shell out
|
|
35
|
+
* to `prisma db seed`.
|
|
36
|
+
* 3. Otherwise — clear error pointing the user at option 1.
|
|
37
|
+
*/
|
|
38
|
+
export declare function runSeeder(cwd?: string): Promise<void>;
|
|
18
39
|
//# sourceMappingURL=migrate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,GAAG,GAAG,QAAQ,GAAG,SAAS,CAAA;AAItC,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,GAAG,GAAE,MAAsB,GAAG,GAAG,GAAG,IAAI,CAUjE;AAWD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAMzE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAOxE;AAED,8EAA8E;AAC9E,wBAAgB,SAAS,CACvB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,SAAS,GAAG,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,SAAS,GAAG,aAAa,EACtG,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5C,MAAM,EAAE,CAqCV;AAID;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE;IAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG;QAAE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAA;CAAE,GAC3H,IAAI,CA6EN;AAED;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0C1E"}
|
package/dist/commands/migrate.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { readFileSync } from 'node:fs';
|
|
1
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
3
4
|
import { spawn } from 'node:child_process';
|
|
4
5
|
// ─── Helpers ──────────────────────────────────────────────
|
|
5
6
|
/** Detect which ORM is installed by checking package.json dependencies. */
|
|
@@ -25,6 +26,31 @@ function run(cmd, args, cwd) {
|
|
|
25
26
|
proc.on('error', reject);
|
|
26
27
|
});
|
|
27
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Find a `database/seeders/DatabaseSeeder` file in the project root.
|
|
31
|
+
* Returns the absolute path, or null if not found. Exported for testing.
|
|
32
|
+
*/
|
|
33
|
+
export function findSeederFile(cwd = process.cwd()) {
|
|
34
|
+
for (const ext of ['ts', 'js', 'mts', 'mjs']) {
|
|
35
|
+
const candidate = join(cwd, 'database', 'seeders', `DatabaseSeeder.${ext}`);
|
|
36
|
+
if (existsSync(candidate))
|
|
37
|
+
return candidate;
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Detect whether `package.json` has a `prisma.seed` field configured.
|
|
43
|
+
* Used as the fallback path for Prisma projects that don't ship a Seeder class.
|
|
44
|
+
*/
|
|
45
|
+
export function hasPrismaSeedConfig(cwd = process.cwd()) {
|
|
46
|
+
try {
|
|
47
|
+
const pkg = JSON.parse(readFileSync(join(cwd, 'package.json'), 'utf8'));
|
|
48
|
+
return typeof pkg?.prisma?.seed === 'string' && pkg.prisma.seed.length > 0;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
28
54
|
/** Build the args array for a given ORM and command. Exported for testing. */
|
|
29
55
|
export function buildArgs(orm, command, options = {}) {
|
|
30
56
|
const env = options.env ?? process.env['NODE_ENV'] ?? 'development';
|
|
@@ -127,5 +153,60 @@ export function registerMigrateCommands(rudder) {
|
|
|
127
153
|
await exec(orm, 'db:generate');
|
|
128
154
|
console.log(' Client generated.');
|
|
129
155
|
}).description('Regenerate the database client (Prisma only)');
|
|
156
|
+
// ── db:seed ───────────────────────────────────────────
|
|
157
|
+
rudder.command('db:seed', async () => {
|
|
158
|
+
await runSeeder(cwd);
|
|
159
|
+
}).description('Seed the database — runs database/seeders/DatabaseSeeder');
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* In-process seeder runner.
|
|
163
|
+
*
|
|
164
|
+
* Resolution order:
|
|
165
|
+
* 1. `database/seeders/DatabaseSeeder.{ts,js,mts,mjs}` — instantiate default
|
|
166
|
+
* export and call `.run()` (or `await default()` if it's a function).
|
|
167
|
+
* 2. Prisma fallback — if `package.json#prisma.seed` is configured, shell out
|
|
168
|
+
* to `prisma db seed`.
|
|
169
|
+
* 3. Otherwise — clear error pointing the user at option 1.
|
|
170
|
+
*/
|
|
171
|
+
export async function runSeeder(cwd = process.cwd()) {
|
|
172
|
+
const seederFile = findSeederFile(cwd);
|
|
173
|
+
if (seederFile) {
|
|
174
|
+
console.log(` Seeding from ${seederFile.replace(cwd + '/', '')}…`);
|
|
175
|
+
const mod = await import(pathToFileURL(seederFile).href);
|
|
176
|
+
const exported = mod.default;
|
|
177
|
+
if (!exported) {
|
|
178
|
+
throw new Error(`[RudderJS] ${seederFile} has no default export. Export a Seeder subclass or an async function.`);
|
|
179
|
+
}
|
|
180
|
+
if (typeof exported === 'function') {
|
|
181
|
+
// Class constructor → instantiate + run(); or plain function → invoke
|
|
182
|
+
const isClass = /^class\s/.test(Function.prototype.toString.call(exported));
|
|
183
|
+
if (isClass) {
|
|
184
|
+
const Cls = exported;
|
|
185
|
+
const instance = new Cls();
|
|
186
|
+
await instance.run();
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
await exported();
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
throw new Error(`[RudderJS] ${seederFile} default export must be a Seeder class or function.`);
|
|
194
|
+
}
|
|
195
|
+
console.log(' Seeding complete.');
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
if (detectORM(cwd) === 'prisma' && hasPrismaSeedConfig(cwd)) {
|
|
199
|
+
console.log(' Running prisma db seed (configured in package.json)…');
|
|
200
|
+
const code = await run('pnpm', ['exec', 'prisma', 'db', 'seed'], cwd);
|
|
201
|
+
if (code !== 0) {
|
|
202
|
+
throw new Error(`prisma db seed failed (exit ${code})`);
|
|
203
|
+
}
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
throw new Error('[RudderJS] No seeder found. Create database/seeders/DatabaseSeeder.ts:\n\n' +
|
|
207
|
+
' import { Seeder } from \'@rudderjs/orm\'\n' +
|
|
208
|
+
' export default class DatabaseSeeder extends Seeder {\n' +
|
|
209
|
+
' async run() { /* seed your data */ }\n' +
|
|
210
|
+
' }\n');
|
|
130
211
|
}
|
|
131
212
|
//# sourceMappingURL=migrate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ export { Attribute } from './attribute.js';
|
|
|
7
7
|
export { JsonResource, ResourceCollection } from './resource.js';
|
|
8
8
|
export { ModelCollection } from './collection.js';
|
|
9
9
|
export { ModelFactory, sequence } from './factory.js';
|
|
10
|
+
export { Seeder } from './seeder.js';
|
|
11
|
+
export type { SeederConstructor } from './seeder.js';
|
|
10
12
|
export declare class ModelRegistry {
|
|
11
13
|
private static adapter;
|
|
12
14
|
private static models;
|
|
@@ -38,12 +40,28 @@ export declare class ModelRegistry {
|
|
|
38
40
|
static onRegister(listener: (name: string, ModelClass: typeof Model) => void): () => void;
|
|
39
41
|
static reset(): void;
|
|
40
42
|
}
|
|
41
|
-
|
|
43
|
+
/**
|
|
44
|
+
* Thrown by `Model.findOrFail()` and `Model.firstOrFail()` when no record matches.
|
|
45
|
+
* Apps can catch this to render a 404, or let it bubble — `@rudderjs/core` maps
|
|
46
|
+
* it to an HTTP 404 by default.
|
|
47
|
+
*/
|
|
48
|
+
export declare class ModelNotFoundError extends Error {
|
|
49
|
+
readonly model: string;
|
|
50
|
+
readonly id?: string | number;
|
|
51
|
+
constructor(model: string, id?: string | number);
|
|
52
|
+
}
|
|
53
|
+
export type ModelEvent = 'retrieved' | 'creating' | 'created' | 'updating' | 'updated' | 'saving' | 'saved' | 'deleting' | 'deleted' | 'restoring' | 'restored';
|
|
42
54
|
export interface ModelObserver {
|
|
55
|
+
/** Fired after a record is loaded from the database (find/first/all/get). */
|
|
56
|
+
retrieved?(record: Record<string, unknown>): void | Promise<void>;
|
|
43
57
|
creating?(data: Record<string, unknown>): Record<string, unknown> | void | Promise<Record<string, unknown> | void>;
|
|
44
58
|
created?(record: Record<string, unknown>): void | Promise<void>;
|
|
45
59
|
updating?(id: string | number, data: Record<string, unknown>): Record<string, unknown> | false | void | Promise<Record<string, unknown> | false | void>;
|
|
46
60
|
updated?(record: Record<string, unknown>): void | Promise<void>;
|
|
61
|
+
/** Fired before BOTH creating and updating, after the per-event handler. */
|
|
62
|
+
saving?(data: Record<string, unknown>): Record<string, unknown> | void | Promise<Record<string, unknown> | void>;
|
|
63
|
+
/** Fired after BOTH created and updated. */
|
|
64
|
+
saved?(record: Record<string, unknown>): void | Promise<void>;
|
|
47
65
|
deleting?(id: string | number): false | void | Promise<false | void>;
|
|
48
66
|
deleted?(id: string | number): void | Promise<void>;
|
|
49
67
|
restoring?(id: string | number): false | void | Promise<false | void>;
|
|
@@ -99,6 +117,7 @@ export declare function Appends(target: object, key: string | symbol): void;
|
|
|
99
117
|
*/
|
|
100
118
|
export declare function Cast(type: CastDefinition): (target: object, key: string | symbol) => void;
|
|
101
119
|
export declare abstract class Model {
|
|
120
|
+
#private;
|
|
102
121
|
/** The table name — defaults to lowercase class name + 's' */
|
|
103
122
|
static table: string;
|
|
104
123
|
/** Primary key column */
|
|
@@ -152,38 +171,131 @@ export declare abstract class Model {
|
|
|
152
171
|
* - Use `forceDelete()` to permanently remove a record
|
|
153
172
|
*/
|
|
154
173
|
static softDeletes: boolean;
|
|
155
|
-
/** @internal */
|
|
156
|
-
private _instanceHidden?;
|
|
157
|
-
/** @internal */
|
|
158
|
-
private _instanceVisible?;
|
|
159
174
|
static globalScopes: Record<string, ScopeFn>;
|
|
160
175
|
static scopes: Record<string, ScopeFn>;
|
|
161
176
|
/** @internal */
|
|
162
177
|
private static _observers;
|
|
163
178
|
/** @internal */
|
|
164
179
|
private static _listeners;
|
|
180
|
+
/** @internal — true while a withoutEvents() block is active for this class. */
|
|
181
|
+
private static _eventsMuted;
|
|
165
182
|
static observe(ObserverClass: new () => ModelObserver): void;
|
|
166
183
|
static on(event: ModelEvent, handler: (...args: any[]) => any): void;
|
|
167
184
|
private static _fireEvent;
|
|
168
185
|
static clearObservers(): void;
|
|
169
186
|
static getTable(this: typeof Model): string;
|
|
187
|
+
/**
|
|
188
|
+
* Build a Model instance from a plain database record.
|
|
189
|
+
*
|
|
190
|
+
* The returned object is `instanceof <ModelClass>`, has the model's
|
|
191
|
+
* prototype methods (`save`, `fill`, `refresh`, `delete`, etc.), and
|
|
192
|
+
* carries every column from `record` as an enumerable own property.
|
|
193
|
+
*
|
|
194
|
+
* Idempotent: passing an already-hydrated instance of the same class
|
|
195
|
+
* returns it unchanged. Passing `null`/`undefined` returns `null`.
|
|
196
|
+
*
|
|
197
|
+
* Most callers don't need to invoke this directly — query results
|
|
198
|
+
* (`find`, `first`, `all`, `paginate`, `where().get()`, etc.) are
|
|
199
|
+
* hydrated automatically. Use it when you have a raw record from
|
|
200
|
+
* outside the ORM (e.g. cached JSON, a fixture file) and want a
|
|
201
|
+
* working Model instance.
|
|
202
|
+
*/
|
|
203
|
+
static hydrate<T extends typeof Model>(this: T, record: unknown): InstanceType<T> | null;
|
|
204
|
+
/** @internal — wrap a QueryBuilder so its read methods return Model instances. */
|
|
205
|
+
private static _hydratingQb;
|
|
170
206
|
static query<T extends typeof Model>(this: T): QueryBuilder<InstanceType<T>> & {
|
|
171
207
|
scope(name: string, ...args: unknown[]): QueryBuilder<InstanceType<T>>;
|
|
172
208
|
withoutGlobalScope(name: string): QueryBuilder<InstanceType<T>>;
|
|
173
209
|
};
|
|
174
210
|
private static _q;
|
|
175
211
|
static find<T extends typeof Model>(this: T, id: number | string): Promise<InstanceType<T> | null>;
|
|
212
|
+
/** Like `find()`, but throws `ModelNotFoundError` if no record matches. */
|
|
213
|
+
static findOrFail<T extends typeof Model>(this: T, id: number | string): Promise<InstanceType<T>>;
|
|
176
214
|
static all<T extends typeof Model>(this: T): Promise<InstanceType<T>[]>;
|
|
177
215
|
static first<T extends typeof Model>(this: T): Promise<InstanceType<T> | null>;
|
|
216
|
+
/** Like `first()`, but throws `ModelNotFoundError` if no record matches. */
|
|
217
|
+
static firstOrFail<T extends typeof Model>(this: T): Promise<InstanceType<T>>;
|
|
178
218
|
static count<T extends typeof Model>(this: T): Promise<number>;
|
|
179
219
|
static paginate<T extends typeof Model>(this: T, page: number, perPage?: number): Promise<PaginatedResult<InstanceType<T>>>;
|
|
180
220
|
static where<T extends typeof Model>(this: T, column: string, value: unknown): QueryBuilder<InstanceType<T>>;
|
|
221
|
+
/**
|
|
222
|
+
* Find a record by attributes; if none exists, create one with `attrs` merged with `values`.
|
|
223
|
+
* Returns the existing or newly-created record.
|
|
224
|
+
*/
|
|
225
|
+
static firstOrCreate<T extends typeof Model>(this: T, attrs: Partial<InstanceType<T>>, values?: Partial<InstanceType<T>>): Promise<InstanceType<T>>;
|
|
226
|
+
/**
|
|
227
|
+
* Find a record by attributes; if found, update it with `values`. If not, create it
|
|
228
|
+
* with `attrs` merged with `values`. Returns the upserted record.
|
|
229
|
+
*/
|
|
230
|
+
static updateOrCreate<T extends typeof Model>(this: T, attrs: Partial<InstanceType<T>>, values: Partial<InstanceType<T>>): Promise<InstanceType<T>>;
|
|
231
|
+
/**
|
|
232
|
+
* Run `fn` with all observer / listener firing muted for this model class.
|
|
233
|
+
* Useful for bulk seeding or tests where lifecycle hooks would interfere.
|
|
234
|
+
*/
|
|
235
|
+
static withoutEvents<T>(this: typeof Model, fn: () => T | Promise<T>): Promise<T>;
|
|
181
236
|
static create<T extends typeof Model>(this: T, data: Partial<InstanceType<T>>): Promise<InstanceType<T>>;
|
|
182
237
|
static with<T extends typeof Model>(this: T, ...relations: string[]): QueryBuilder<InstanceType<T>>;
|
|
183
238
|
static update<T extends typeof Model>(this: T, id: number | string, data: Partial<InstanceType<T>>): Promise<InstanceType<T>>;
|
|
184
239
|
static delete<T extends typeof Model>(this: T, id: number | string): Promise<void>;
|
|
185
240
|
static restore<T extends typeof Model>(this: T, id: number | string): Promise<InstanceType<T>>;
|
|
186
241
|
static forceDelete<T extends typeof Model>(this: T, id: number | string): Promise<void>;
|
|
242
|
+
/** @internal — pull the primary-key value from this instance, or `undefined` if unset. */
|
|
243
|
+
private _getKey;
|
|
244
|
+
/**
|
|
245
|
+
* @internal — own enumerable data fields, with framework-internal `_` keys
|
|
246
|
+
* stripped and `undefined` values dropped so a class-declared but never-set
|
|
247
|
+
* field (`id!: number`) doesn't leak into a create/update payload.
|
|
248
|
+
*/
|
|
249
|
+
private _toData;
|
|
250
|
+
/**
|
|
251
|
+
* Persist this instance. Inserts when the primary key is unset; otherwise updates.
|
|
252
|
+
*
|
|
253
|
+
* Goes through the static `create()` / `update()` path so observers, casts,
|
|
254
|
+
* and mutators all fire. The instance is mutated in place with the canonical
|
|
255
|
+
* fields returned by the database (default values, generated ids, computed columns)
|
|
256
|
+
* and returned for chaining.
|
|
257
|
+
*/
|
|
258
|
+
save(): Promise<this>;
|
|
259
|
+
/**
|
|
260
|
+
* Mass-assign a partial set of attributes onto this instance. Does not persist —
|
|
261
|
+
* call `save()` afterwards. Returns `this` for chaining.
|
|
262
|
+
*
|
|
263
|
+
* Note: `static fillable` is currently a documentation hint and is not enforced
|
|
264
|
+
* at the framework level; filter user input with a `FormRequest` or explicit
|
|
265
|
+
* key picks before calling `fill()`.
|
|
266
|
+
*/
|
|
267
|
+
fill(data: Partial<this>): this;
|
|
268
|
+
/**
|
|
269
|
+
* Re-read this instance from the database, replacing in-place with fresh
|
|
270
|
+
* column values. Throws `ModelNotFoundError` if the row no longer exists.
|
|
271
|
+
* Useful after triggers, generated columns, or a parallel update from another process.
|
|
272
|
+
*/
|
|
273
|
+
refresh(): Promise<this>;
|
|
274
|
+
/**
|
|
275
|
+
* Delete this instance from the database. Soft-deletes when `static softDeletes`
|
|
276
|
+
* is enabled. Routes through the static `delete()` so observers fire.
|
|
277
|
+
*/
|
|
278
|
+
delete(): Promise<void>;
|
|
279
|
+
/**
|
|
280
|
+
* Clone this instance into a new, unsaved copy — the primary key and the
|
|
281
|
+
* standard timestamp columns are dropped, and any keys passed in `except`
|
|
282
|
+
* are also stripped. Call `save()` on the returned instance to persist.
|
|
283
|
+
*
|
|
284
|
+
* @example
|
|
285
|
+
* const draft = post.replicate(['publishedAt'])
|
|
286
|
+
* draft.title = 'Copy: ' + draft.title
|
|
287
|
+
* await draft.save()
|
|
288
|
+
*/
|
|
289
|
+
replicate(except?: string[]): this;
|
|
290
|
+
/**
|
|
291
|
+
* True when `other` represents the same record — same model class (by table)
|
|
292
|
+
* and same primary key.
|
|
293
|
+
*/
|
|
294
|
+
is(other: Model | null | undefined): boolean;
|
|
295
|
+
/** Inverse of `is()`. */
|
|
296
|
+
isNot(other: Model | null | undefined): boolean;
|
|
297
|
+
/** True when this instance has been soft-deleted (its `deletedAt` is set). */
|
|
298
|
+
trashed(): boolean;
|
|
187
299
|
/** @internal — apply cast setters and attribute mutators to an incoming data payload */
|
|
188
300
|
private static _applyMutators;
|
|
189
301
|
/**
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAa,MAAM,qBAAqB,CAAA;AAC/F,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,WAAW,CAAA;AACjE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAC7J,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,MAAoC,gBAAgB,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAa,eAAe,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,MAA8B,iBAAiB,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAuB,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -3,6 +3,7 @@ export { Attribute } from './attribute.js';
|
|
|
3
3
|
export { JsonResource, ResourceCollection } from './resource.js';
|
|
4
4
|
export { ModelCollection } from './collection.js';
|
|
5
5
|
export { ModelFactory, sequence } from './factory.js';
|
|
6
|
+
export { Seeder } from './seeder.js';
|
|
6
7
|
// ─── Global ORM Registry ───────────────────────────────────
|
|
7
8
|
export class ModelRegistry {
|
|
8
9
|
static adapter = null;
|
|
@@ -60,6 +61,25 @@ export class ModelRegistry {
|
|
|
60
61
|
this.listeners.clear();
|
|
61
62
|
}
|
|
62
63
|
}
|
|
64
|
+
// ─── Errors ────────────────────────────────────────────────
|
|
65
|
+
/**
|
|
66
|
+
* Thrown by `Model.findOrFail()` and `Model.firstOrFail()` when no record matches.
|
|
67
|
+
* Apps can catch this to render a 404, or let it bubble — `@rudderjs/core` maps
|
|
68
|
+
* it to an HTTP 404 by default.
|
|
69
|
+
*/
|
|
70
|
+
export class ModelNotFoundError extends Error {
|
|
71
|
+
model;
|
|
72
|
+
id;
|
|
73
|
+
constructor(model, id) {
|
|
74
|
+
super(id !== undefined
|
|
75
|
+
? `[RudderJS ORM] No ${model} found for id ${String(id)}.`
|
|
76
|
+
: `[RudderJS ORM] No ${model} found.`);
|
|
77
|
+
this.name = 'ModelNotFoundError';
|
|
78
|
+
this.model = model;
|
|
79
|
+
if (id !== undefined)
|
|
80
|
+
this.id = id;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
63
83
|
// ─── Decorators ────────────────────────────────────────────
|
|
64
84
|
/**
|
|
65
85
|
* Mark an instance property as hidden from JSON output.
|
|
@@ -191,10 +211,14 @@ export class Model {
|
|
|
191
211
|
*/
|
|
192
212
|
static softDeletes = false;
|
|
193
213
|
// ── Instance-level serialization overrides ─────────────
|
|
214
|
+
//
|
|
215
|
+
// True ECMAScript private fields (`#`) so they don't appear in
|
|
216
|
+
// `Object.entries(this)` / object spread / `JSON.stringify` — keeps
|
|
217
|
+
// hydrated instances clean wire-format equivalents of plain records.
|
|
194
218
|
/** @internal */
|
|
195
|
-
|
|
219
|
+
#instanceHidden;
|
|
196
220
|
/** @internal */
|
|
197
|
-
|
|
221
|
+
#instanceVisible;
|
|
198
222
|
// ── Scopes ─────────────────────────────────────────────
|
|
199
223
|
static globalScopes = {};
|
|
200
224
|
static scopes = {};
|
|
@@ -204,6 +228,8 @@ export class Model {
|
|
|
204
228
|
/** @internal */
|
|
205
229
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
206
230
|
static _listeners = new Map();
|
|
231
|
+
/** @internal — true while a withoutEvents() block is active for this class. */
|
|
232
|
+
static _eventsMuted = false;
|
|
207
233
|
static observe(ObserverClass) {
|
|
208
234
|
if (!Object.prototype.hasOwnProperty.call(this, '_observers')) {
|
|
209
235
|
this._observers = [];
|
|
@@ -221,6 +247,10 @@ export class Model {
|
|
|
221
247
|
}
|
|
222
248
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
223
249
|
static async _fireEvent(event, ...args) {
|
|
250
|
+
if (Object.prototype.hasOwnProperty.call(this, '_eventsMuted') && this._eventsMuted) {
|
|
251
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
252
|
+
return args[0];
|
|
253
|
+
}
|
|
224
254
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
225
255
|
let result = args[0];
|
|
226
256
|
const observers = Object.prototype.hasOwnProperty.call(this, '_observers') ? this._observers : [];
|
|
@@ -255,89 +285,238 @@ export class Model {
|
|
|
255
285
|
static getTable() {
|
|
256
286
|
return this.table ?? `${this.name.toLowerCase()}s`;
|
|
257
287
|
}
|
|
288
|
+
/**
|
|
289
|
+
* Build a Model instance from a plain database record.
|
|
290
|
+
*
|
|
291
|
+
* The returned object is `instanceof <ModelClass>`, has the model's
|
|
292
|
+
* prototype methods (`save`, `fill`, `refresh`, `delete`, etc.), and
|
|
293
|
+
* carries every column from `record` as an enumerable own property.
|
|
294
|
+
*
|
|
295
|
+
* Idempotent: passing an already-hydrated instance of the same class
|
|
296
|
+
* returns it unchanged. Passing `null`/`undefined` returns `null`.
|
|
297
|
+
*
|
|
298
|
+
* Most callers don't need to invoke this directly — query results
|
|
299
|
+
* (`find`, `first`, `all`, `paginate`, `where().get()`, etc.) are
|
|
300
|
+
* hydrated automatically. Use it when you have a raw record from
|
|
301
|
+
* outside the ORM (e.g. cached JSON, a fixture file) and want a
|
|
302
|
+
* working Model instance.
|
|
303
|
+
*/
|
|
304
|
+
static hydrate(record) {
|
|
305
|
+
if (record === null || record === undefined)
|
|
306
|
+
return null;
|
|
307
|
+
if (record instanceof Model && record.constructor === this)
|
|
308
|
+
return record;
|
|
309
|
+
const Ctor = this;
|
|
310
|
+
const instance = new Ctor();
|
|
311
|
+
Object.assign(instance, record);
|
|
312
|
+
return instance;
|
|
313
|
+
}
|
|
314
|
+
/** @internal — wrap a QueryBuilder so its read methods return Model instances. */
|
|
315
|
+
static _hydratingQb(self, qb) {
|
|
316
|
+
const ModelClass = self;
|
|
317
|
+
const wrap = (r) => ModelClass.hydrate.call(self, r);
|
|
318
|
+
const wrapMaybe = (r) => r == null ? null : wrap(r);
|
|
319
|
+
const wrapMany = (rs) => rs.map(wrap);
|
|
320
|
+
const proxy = new Proxy(qb, {
|
|
321
|
+
get(target, prop, receiver) {
|
|
322
|
+
const value = Reflect.get(target, prop, receiver);
|
|
323
|
+
if (typeof value !== 'function')
|
|
324
|
+
return value;
|
|
325
|
+
switch (prop) {
|
|
326
|
+
case 'find':
|
|
327
|
+
return async (id) => wrapMaybe(await target.find(id));
|
|
328
|
+
case 'first':
|
|
329
|
+
return async () => wrapMaybe(await target.first());
|
|
330
|
+
case 'get':
|
|
331
|
+
return async () => wrapMany(await target.get());
|
|
332
|
+
case 'all':
|
|
333
|
+
return async () => wrapMany(await target.all());
|
|
334
|
+
case 'paginate':
|
|
335
|
+
return async (page, perPage) => {
|
|
336
|
+
const r = await target.paginate(page ?? 1, perPage);
|
|
337
|
+
return { ...r, data: wrapMany(r.data) };
|
|
338
|
+
};
|
|
339
|
+
case 'create':
|
|
340
|
+
return async (data) => wrap(await target.create(data));
|
|
341
|
+
case 'update':
|
|
342
|
+
return async (id, data) => wrap(await target.update(id, data));
|
|
343
|
+
case 'restore':
|
|
344
|
+
return async (id) => wrap(await target.restore(id));
|
|
345
|
+
default:
|
|
346
|
+
// Chainable methods (where/orderBy/with/...) typically return `target` —
|
|
347
|
+
// re-wrap so `Model.where('a', 1).first()` keeps hydrating.
|
|
348
|
+
return (...args) => {
|
|
349
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
350
|
+
const result = value.apply(target, args);
|
|
351
|
+
return result === target ? proxy : result;
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
},
|
|
355
|
+
});
|
|
356
|
+
return proxy;
|
|
357
|
+
}
|
|
258
358
|
static query() {
|
|
259
359
|
ModelRegistry.register(this);
|
|
260
|
-
let q = ModelRegistry.getAdapter().query(this.getTable());
|
|
261
|
-
if (this.softDeletes) {
|
|
262
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
263
|
-
q._enableSoftDeletes?.();
|
|
264
|
-
}
|
|
265
|
-
const globalScopes = this.globalScopes;
|
|
266
|
-
const excludedScopes = new Set();
|
|
267
|
-
for (const [, scopeFn] of Object.entries(globalScopes)) {
|
|
268
|
-
q = scopeFn(q);
|
|
269
|
-
}
|
|
270
360
|
const modelClass = this;
|
|
271
361
|
const localScopes = modelClass.scopes;
|
|
272
|
-
|
|
273
|
-
const
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
if (!scopeFn)
|
|
277
|
-
throw new Error(`[RudderJS ORM] Scope "${name}" is not defined on ${modelClass.name}.`);
|
|
278
|
-
return scopeFn(enhanced, ...args);
|
|
279
|
-
};
|
|
280
|
-
enhanced.withoutGlobalScope = (name) => {
|
|
281
|
-
excludedScopes.add(name);
|
|
282
|
-
let rebuilt = ModelRegistry.getAdapter().query(modelClass.getTable());
|
|
362
|
+
const globalScopes = modelClass.globalScopes;
|
|
363
|
+
const excludedScopes = new Set();
|
|
364
|
+
const buildScoped = () => {
|
|
365
|
+
let raw = ModelRegistry.getAdapter().query(modelClass.getTable());
|
|
283
366
|
if (modelClass.softDeletes) {
|
|
284
367
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
285
|
-
|
|
368
|
+
raw._enableSoftDeletes?.();
|
|
286
369
|
}
|
|
287
370
|
for (const [scopeName, scopeFn] of Object.entries(globalScopes)) {
|
|
288
371
|
if (!excludedScopes.has(scopeName)) {
|
|
289
|
-
|
|
372
|
+
raw = scopeFn(raw);
|
|
290
373
|
}
|
|
291
374
|
}
|
|
375
|
+
return Model._hydratingQb(this, raw);
|
|
376
|
+
};
|
|
377
|
+
const enhance = (q) => {
|
|
292
378
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
293
|
-
;
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
379
|
+
const enhanced = q;
|
|
380
|
+
enhanced.scope = (name, ...args) => {
|
|
381
|
+
const scopeFn = localScopes[name];
|
|
382
|
+
if (!scopeFn)
|
|
383
|
+
throw new Error(`[RudderJS ORM] Scope "${name}" is not defined on ${modelClass.name}.`);
|
|
384
|
+
return scopeFn(enhanced, ...args);
|
|
385
|
+
};
|
|
386
|
+
enhanced.withoutGlobalScope = (name) => {
|
|
387
|
+
excludedScopes.add(name);
|
|
388
|
+
return enhance(buildScoped());
|
|
389
|
+
};
|
|
390
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
391
|
+
return enhanced;
|
|
297
392
|
};
|
|
298
|
-
return
|
|
393
|
+
return enhance(buildScoped());
|
|
299
394
|
}
|
|
300
395
|
static _q(self) {
|
|
301
396
|
ModelRegistry.register(self);
|
|
302
|
-
const
|
|
303
|
-
|
|
397
|
+
const ModelClass = self;
|
|
398
|
+
let q = ModelRegistry.getAdapter().query(ModelClass.getTable());
|
|
399
|
+
if (ModelClass.softDeletes) {
|
|
304
400
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
305
401
|
q._enableSoftDeletes?.();
|
|
306
402
|
}
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
result = scopeFn(result);
|
|
403
|
+
for (const [, scopeFn] of Object.entries(ModelClass.globalScopes)) {
|
|
404
|
+
q = scopeFn(q);
|
|
310
405
|
}
|
|
311
|
-
return
|
|
406
|
+
return Model._hydratingQb(self, q);
|
|
407
|
+
}
|
|
408
|
+
static async find(id) {
|
|
409
|
+
const self = this;
|
|
410
|
+
const record = await Model._q(this).find(id);
|
|
411
|
+
if (record)
|
|
412
|
+
await self._fireEvent('retrieved', record);
|
|
413
|
+
return record;
|
|
414
|
+
}
|
|
415
|
+
/** Like `find()`, but throws `ModelNotFoundError` if no record matches. */
|
|
416
|
+
static async findOrFail(id) {
|
|
417
|
+
const record = await this.find(id);
|
|
418
|
+
if (!record)
|
|
419
|
+
throw new ModelNotFoundError(this.name, id);
|
|
420
|
+
return record;
|
|
312
421
|
}
|
|
313
|
-
static
|
|
314
|
-
|
|
422
|
+
static async all() {
|
|
423
|
+
const self = this;
|
|
424
|
+
const records = await Model._q(this).all();
|
|
425
|
+
for (const r of records)
|
|
426
|
+
await self._fireEvent('retrieved', r);
|
|
427
|
+
return records;
|
|
315
428
|
}
|
|
316
|
-
static
|
|
317
|
-
|
|
429
|
+
static async first() {
|
|
430
|
+
const self = this;
|
|
431
|
+
const record = await Model._q(this).first();
|
|
432
|
+
if (record)
|
|
433
|
+
await self._fireEvent('retrieved', record);
|
|
434
|
+
return record;
|
|
318
435
|
}
|
|
319
|
-
|
|
320
|
-
|
|
436
|
+
/** Like `first()`, but throws `ModelNotFoundError` if no record matches. */
|
|
437
|
+
static async firstOrFail() {
|
|
438
|
+
const record = await this.first();
|
|
439
|
+
if (!record)
|
|
440
|
+
throw new ModelNotFoundError(this.name);
|
|
441
|
+
return record;
|
|
321
442
|
}
|
|
322
443
|
static count() {
|
|
323
444
|
return Model._q(this).count();
|
|
324
445
|
}
|
|
325
|
-
static paginate(page, perPage) {
|
|
326
|
-
|
|
446
|
+
static async paginate(page, perPage) {
|
|
447
|
+
const self = this;
|
|
448
|
+
const result = await Model._q(this).paginate(page, perPage);
|
|
449
|
+
for (const r of result.data)
|
|
450
|
+
await self._fireEvent('retrieved', r);
|
|
451
|
+
return result;
|
|
327
452
|
}
|
|
328
453
|
static where(column, value) {
|
|
329
454
|
return Model._q(this).where(column, value);
|
|
330
455
|
}
|
|
456
|
+
/**
|
|
457
|
+
* Find a record by attributes; if none exists, create one with `attrs` merged with `values`.
|
|
458
|
+
* Returns the existing or newly-created record.
|
|
459
|
+
*/
|
|
460
|
+
static async firstOrCreate(attrs, values = {}) {
|
|
461
|
+
const self = this;
|
|
462
|
+
let q = Model._q(this);
|
|
463
|
+
for (const [col, val] of Object.entries(attrs)) {
|
|
464
|
+
q = q.where(col, val);
|
|
465
|
+
}
|
|
466
|
+
const existing = await q.first();
|
|
467
|
+
if (existing) {
|
|
468
|
+
await self._fireEvent('retrieved', existing);
|
|
469
|
+
return existing;
|
|
470
|
+
}
|
|
471
|
+
return this.create({ ...attrs, ...values });
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* Find a record by attributes; if found, update it with `values`. If not, create it
|
|
475
|
+
* with `attrs` merged with `values`. Returns the upserted record.
|
|
476
|
+
*/
|
|
477
|
+
static async updateOrCreate(attrs, values) {
|
|
478
|
+
const self = this;
|
|
479
|
+
let q = Model._q(this);
|
|
480
|
+
for (const [col, val] of Object.entries(attrs)) {
|
|
481
|
+
q = q.where(col, val);
|
|
482
|
+
}
|
|
483
|
+
const existing = await q.first();
|
|
484
|
+
if (existing) {
|
|
485
|
+
const id = existing[self.primaryKey];
|
|
486
|
+
return this.update(id, values);
|
|
487
|
+
}
|
|
488
|
+
return this.create({ ...attrs, ...values });
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* Run `fn` with all observer / listener firing muted for this model class.
|
|
492
|
+
* Useful for bulk seeding or tests where lifecycle hooks would interfere.
|
|
493
|
+
*/
|
|
494
|
+
static async withoutEvents(fn) {
|
|
495
|
+
const previous = Object.prototype.hasOwnProperty.call(this, '_eventsMuted') ? this._eventsMuted : false;
|
|
496
|
+
this._eventsMuted = true;
|
|
497
|
+
try {
|
|
498
|
+
return await fn();
|
|
499
|
+
}
|
|
500
|
+
finally {
|
|
501
|
+
this._eventsMuted = previous;
|
|
502
|
+
}
|
|
503
|
+
}
|
|
331
504
|
static async create(data) {
|
|
332
505
|
const self = this;
|
|
333
506
|
let payload = self._applyMutators(data);
|
|
334
|
-
const
|
|
335
|
-
if (
|
|
507
|
+
const creatingResult = await self._fireEvent('creating', payload);
|
|
508
|
+
if (creatingResult === false)
|
|
336
509
|
throw new Error(`[RudderJS ORM] Create cancelled by observer on ${self.name}.`);
|
|
337
|
-
if (
|
|
338
|
-
payload =
|
|
510
|
+
if (creatingResult && typeof creatingResult === 'object')
|
|
511
|
+
payload = creatingResult;
|
|
512
|
+
const savingResult = await self._fireEvent('saving', payload);
|
|
513
|
+
if (savingResult === false)
|
|
514
|
+
throw new Error(`[RudderJS ORM] Create cancelled by saving observer on ${self.name}.`);
|
|
515
|
+
if (savingResult && typeof savingResult === 'object')
|
|
516
|
+
payload = savingResult;
|
|
339
517
|
const record = await Model._q(this).create(payload);
|
|
340
518
|
await self._fireEvent('created', record);
|
|
519
|
+
await self._fireEvent('saved', record);
|
|
341
520
|
return record;
|
|
342
521
|
}
|
|
343
522
|
static with(...relations) {
|
|
@@ -346,13 +525,19 @@ export class Model {
|
|
|
346
525
|
static async update(id, data) {
|
|
347
526
|
const self = this;
|
|
348
527
|
let payload = self._applyMutators(data);
|
|
349
|
-
const
|
|
350
|
-
if (
|
|
528
|
+
const updatingResult = await self._fireEvent('updating', id, payload);
|
|
529
|
+
if (updatingResult === false)
|
|
351
530
|
throw new Error(`[RudderJS ORM] Update cancelled by observer on ${self.name}.`);
|
|
352
|
-
if (
|
|
353
|
-
payload =
|
|
531
|
+
if (updatingResult && typeof updatingResult === 'object')
|
|
532
|
+
payload = updatingResult;
|
|
533
|
+
const savingResult = await self._fireEvent('saving', payload);
|
|
534
|
+
if (savingResult === false)
|
|
535
|
+
throw new Error(`[RudderJS ORM] Update cancelled by saving observer on ${self.name}.`);
|
|
536
|
+
if (savingResult && typeof savingResult === 'object')
|
|
537
|
+
payload = savingResult;
|
|
354
538
|
const record = await Model._q(this).update(id, payload);
|
|
355
539
|
await self._fireEvent('updated', record);
|
|
540
|
+
await self._fireEvent('saved', record);
|
|
356
541
|
return record;
|
|
357
542
|
}
|
|
358
543
|
static async delete(id) {
|
|
@@ -380,6 +565,149 @@ export class Model {
|
|
|
380
565
|
await Model._q(this).forceDelete(id);
|
|
381
566
|
await self._fireEvent('deleted', id);
|
|
382
567
|
}
|
|
568
|
+
// ── Instance persistence methods ───────────────────────
|
|
569
|
+
/** @internal — pull the primary-key value from this instance, or `undefined` if unset. */
|
|
570
|
+
_getKey() {
|
|
571
|
+
const ctor = this.constructor;
|
|
572
|
+
const value = this[ctor.primaryKey];
|
|
573
|
+
if (value === undefined || value === null)
|
|
574
|
+
return undefined;
|
|
575
|
+
return value;
|
|
576
|
+
}
|
|
577
|
+
/**
|
|
578
|
+
* @internal — own enumerable data fields, with framework-internal `_` keys
|
|
579
|
+
* stripped and `undefined` values dropped so a class-declared but never-set
|
|
580
|
+
* field (`id!: number`) doesn't leak into a create/update payload.
|
|
581
|
+
*/
|
|
582
|
+
_toData() {
|
|
583
|
+
const out = {};
|
|
584
|
+
for (const [k, v] of Object.entries(this)) {
|
|
585
|
+
if (k.startsWith('_'))
|
|
586
|
+
continue;
|
|
587
|
+
if (v === undefined)
|
|
588
|
+
continue;
|
|
589
|
+
out[k] = v;
|
|
590
|
+
}
|
|
591
|
+
return out;
|
|
592
|
+
}
|
|
593
|
+
/**
|
|
594
|
+
* Persist this instance. Inserts when the primary key is unset; otherwise updates.
|
|
595
|
+
*
|
|
596
|
+
* Goes through the static `create()` / `update()` path so observers, casts,
|
|
597
|
+
* and mutators all fire. The instance is mutated in place with the canonical
|
|
598
|
+
* fields returned by the database (default values, generated ids, computed columns)
|
|
599
|
+
* and returned for chaining.
|
|
600
|
+
*/
|
|
601
|
+
async save() {
|
|
602
|
+
const ctor = this.constructor;
|
|
603
|
+
const data = this._toData();
|
|
604
|
+
const id = this._getKey();
|
|
605
|
+
const persisted = id === undefined
|
|
606
|
+
? await ctor.create(data)
|
|
607
|
+
: await ctor.update(id, data);
|
|
608
|
+
Object.assign(this, persisted);
|
|
609
|
+
return this;
|
|
610
|
+
}
|
|
611
|
+
/**
|
|
612
|
+
* Mass-assign a partial set of attributes onto this instance. Does not persist —
|
|
613
|
+
* call `save()` afterwards. Returns `this` for chaining.
|
|
614
|
+
*
|
|
615
|
+
* Note: `static fillable` is currently a documentation hint and is not enforced
|
|
616
|
+
* at the framework level; filter user input with a `FormRequest` or explicit
|
|
617
|
+
* key picks before calling `fill()`.
|
|
618
|
+
*/
|
|
619
|
+
fill(data) {
|
|
620
|
+
Object.assign(this, data);
|
|
621
|
+
return this;
|
|
622
|
+
}
|
|
623
|
+
/**
|
|
624
|
+
* Re-read this instance from the database, replacing in-place with fresh
|
|
625
|
+
* column values. Throws `ModelNotFoundError` if the row no longer exists.
|
|
626
|
+
* Useful after triggers, generated columns, or a parallel update from another process.
|
|
627
|
+
*/
|
|
628
|
+
async refresh() {
|
|
629
|
+
const ctor = this.constructor;
|
|
630
|
+
const id = this._getKey();
|
|
631
|
+
if (id === undefined) {
|
|
632
|
+
throw new Error(`[RudderJS ORM] Cannot refresh a ${ctor.name} without a primary key.`);
|
|
633
|
+
}
|
|
634
|
+
const fresh = await ctor.find(id);
|
|
635
|
+
if (!fresh)
|
|
636
|
+
throw new ModelNotFoundError(ctor.name, id);
|
|
637
|
+
for (const k of Object.keys(this)) {
|
|
638
|
+
if (!k.startsWith('_'))
|
|
639
|
+
delete this[k];
|
|
640
|
+
}
|
|
641
|
+
Object.assign(this, fresh);
|
|
642
|
+
return this;
|
|
643
|
+
}
|
|
644
|
+
/**
|
|
645
|
+
* Delete this instance from the database. Soft-deletes when `static softDeletes`
|
|
646
|
+
* is enabled. Routes through the static `delete()` so observers fire.
|
|
647
|
+
*/
|
|
648
|
+
async delete() {
|
|
649
|
+
const ctor = this.constructor;
|
|
650
|
+
const id = this._getKey();
|
|
651
|
+
if (id === undefined) {
|
|
652
|
+
throw new Error(`[RudderJS ORM] Cannot delete a ${ctor.name} without a primary key.`);
|
|
653
|
+
}
|
|
654
|
+
await ctor.delete(id);
|
|
655
|
+
}
|
|
656
|
+
/**
|
|
657
|
+
* Clone this instance into a new, unsaved copy — the primary key and the
|
|
658
|
+
* standard timestamp columns are dropped, and any keys passed in `except`
|
|
659
|
+
* are also stripped. Call `save()` on the returned instance to persist.
|
|
660
|
+
*
|
|
661
|
+
* @example
|
|
662
|
+
* const draft = post.replicate(['publishedAt'])
|
|
663
|
+
* draft.title = 'Copy: ' + draft.title
|
|
664
|
+
* await draft.save()
|
|
665
|
+
*/
|
|
666
|
+
replicate(except = []) {
|
|
667
|
+
const ctor = this.constructor;
|
|
668
|
+
const exclude = new Set([ctor.primaryKey, 'createdAt', 'updatedAt', 'deletedAt', ...except]);
|
|
669
|
+
const Ctor = ctor;
|
|
670
|
+
const clone = new Ctor();
|
|
671
|
+
// Drop class-declared field defaults that fall under `exclude`, otherwise
|
|
672
|
+
// a subclass with `id!: number` ships an `id: undefined` own property.
|
|
673
|
+
// Then drop any other undefined defaults so the clone reads as a freshly-
|
|
674
|
+
// built record from the source instance, not a half-initialized template.
|
|
675
|
+
for (const k of Object.keys(clone)) {
|
|
676
|
+
if (exclude.has(k) || clone[k] === undefined) {
|
|
677
|
+
delete clone[k];
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
for (const [k, v] of Object.entries(this)) {
|
|
681
|
+
if (k.startsWith('_') || exclude.has(k) || v === undefined)
|
|
682
|
+
continue;
|
|
683
|
+
clone[k] = v;
|
|
684
|
+
}
|
|
685
|
+
return clone;
|
|
686
|
+
}
|
|
687
|
+
/**
|
|
688
|
+
* True when `other` represents the same record — same model class (by table)
|
|
689
|
+
* and same primary key.
|
|
690
|
+
*/
|
|
691
|
+
is(other) {
|
|
692
|
+
if (!other || !(other instanceof Model))
|
|
693
|
+
return false;
|
|
694
|
+
const here = this.constructor;
|
|
695
|
+
const there = other.constructor;
|
|
696
|
+
if (here.getTable() !== there.getTable())
|
|
697
|
+
return false;
|
|
698
|
+
const a = this._getKey();
|
|
699
|
+
const b = other._getKey();
|
|
700
|
+
return a !== undefined && a === b;
|
|
701
|
+
}
|
|
702
|
+
/** Inverse of `is()`. */
|
|
703
|
+
isNot(other) {
|
|
704
|
+
return !this.is(other);
|
|
705
|
+
}
|
|
706
|
+
/** True when this instance has been soft-deleted (its `deletedAt` is set). */
|
|
707
|
+
trashed() {
|
|
708
|
+
const v = this['deletedAt'];
|
|
709
|
+
return v !== null && v !== undefined;
|
|
710
|
+
}
|
|
383
711
|
// ── Cast / Mutator helpers ─────────────────────────────
|
|
384
712
|
/** @internal — apply cast setters and attribute mutators to an incoming data payload */
|
|
385
713
|
static _applyMutators(data) {
|
|
@@ -406,7 +734,7 @@ export class Model {
|
|
|
406
734
|
*/
|
|
407
735
|
makeVisible(keys) {
|
|
408
736
|
const k = Array.isArray(keys) ? keys : [keys];
|
|
409
|
-
this
|
|
737
|
+
this.#instanceHidden = (this.#instanceHidden ?? this.constructor.hidden)
|
|
410
738
|
.filter(h => !k.includes(h));
|
|
411
739
|
return this;
|
|
412
740
|
}
|
|
@@ -416,7 +744,7 @@ export class Model {
|
|
|
416
744
|
*/
|
|
417
745
|
makeHidden(keys) {
|
|
418
746
|
const k = Array.isArray(keys) ? keys : [keys];
|
|
419
|
-
this
|
|
747
|
+
this.#instanceHidden = [...(this.#instanceHidden ?? this.constructor.hidden), ...k];
|
|
420
748
|
return this;
|
|
421
749
|
}
|
|
422
750
|
/**
|
|
@@ -424,7 +752,7 @@ export class Model {
|
|
|
424
752
|
* Returns `this` for chaining.
|
|
425
753
|
*/
|
|
426
754
|
setVisible(keys) {
|
|
427
|
-
this
|
|
755
|
+
this.#instanceVisible = keys;
|
|
428
756
|
return this;
|
|
429
757
|
}
|
|
430
758
|
/**
|
|
@@ -432,7 +760,7 @@ export class Model {
|
|
|
432
760
|
* Returns `this` for chaining.
|
|
433
761
|
*/
|
|
434
762
|
setHidden(keys) {
|
|
435
|
-
this
|
|
763
|
+
this.#instanceHidden = keys;
|
|
436
764
|
return this;
|
|
437
765
|
}
|
|
438
766
|
/**
|
|
@@ -440,8 +768,8 @@ export class Model {
|
|
|
440
768
|
* Returns `this` for chaining.
|
|
441
769
|
*/
|
|
442
770
|
mergeVisible(keys) {
|
|
443
|
-
const base = this
|
|
444
|
-
this
|
|
771
|
+
const base = this.#instanceVisible ?? this.constructor.visible;
|
|
772
|
+
this.#instanceVisible = [...base, ...keys];
|
|
445
773
|
return this;
|
|
446
774
|
}
|
|
447
775
|
/**
|
|
@@ -449,16 +777,15 @@ export class Model {
|
|
|
449
777
|
* Returns `this` for chaining.
|
|
450
778
|
*/
|
|
451
779
|
mergeHidden(keys) {
|
|
452
|
-
const base = this
|
|
453
|
-
this
|
|
780
|
+
const base = this.#instanceHidden ?? this.constructor.hidden;
|
|
781
|
+
this.#instanceHidden = [...base, ...keys];
|
|
454
782
|
return this;
|
|
455
783
|
}
|
|
456
784
|
// ── toJSON ─────────────────────────────────────────────
|
|
457
785
|
toJSON() {
|
|
458
786
|
const ctor = this.constructor;
|
|
459
|
-
const rawEntries = Object.entries(this).filter(([k]) => !k.startsWith('_instance'));
|
|
460
787
|
const raw = {};
|
|
461
|
-
for (const [k, v] of
|
|
788
|
+
for (const [k, v] of Object.entries(this)) {
|
|
462
789
|
raw[k] = v;
|
|
463
790
|
}
|
|
464
791
|
const result = {};
|
|
@@ -485,8 +812,8 @@ export class Model {
|
|
|
485
812
|
}
|
|
486
813
|
}
|
|
487
814
|
// Determine effective visible / hidden lists
|
|
488
|
-
const effectiveVisible = this
|
|
489
|
-
const effectiveHidden = this
|
|
815
|
+
const effectiveVisible = this.#instanceVisible ?? ctor.visible;
|
|
816
|
+
const effectiveHidden = this.#instanceHidden ?? ctor.hidden;
|
|
490
817
|
// Apply visible (allowlist) — takes precedence
|
|
491
818
|
if (effectiveVisible.length > 0) {
|
|
492
819
|
const appendKeys = new Set(ctor.appends);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAuB,MAAM,WAAW,CAAA;AAKjE,OAAO,EAAE,SAAS,EAAE,MAAoC,gBAAgB,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAa,eAAe,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,MAA8B,iBAAiB,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAuB,cAAc,CAAA;AACtE,OAAO,EAAE,MAAM,EAAE,MAAuC,aAAa,CAAA;AAGrE,8DAA8D;AAE9D,MAAM,OAAO,aAAa;IAChB,MAAM,CAAC,OAAO,GAAsB,IAAI,CAAA;IACxC,MAAM,CAAC,MAAM,GAA8B,IAAI,GAAG,EAAE,CAAA;IACpD,MAAM,CAAC,SAAS,GAA0D,IAAI,GAAG,EAAE,CAAA;IAE3F,MAAM,CAAC,GAAG,CAAC,OAAmB;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,MAAM,CAAC,GAAG;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,MAAM,CAAC,UAAU;QACf,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,mGAAmG,CAAC,CAAA;QACtH,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,QAAQ,CAAC,UAAwB;QACtC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAA;QAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAM;QAC1C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;QACjC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS;YAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IACnE,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,GAAG;QACR,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,QAA0D;QAC1E,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC5B,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAC,CAAA;IAClD,CAAC;IAED,MAAM,CAAC,KAAK;QACV,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QACnB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;IACxB,CAAC;;AAGH,8DAA8D;AAE9D;;;;GAIG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,KAAK,CAAQ;IACb,EAAE,CAAkB;IAE7B,YAAY,KAAa,EAAE,EAAoB;QAC7C,KAAK,CAAC,EAAE,KAAK,SAAS;YACpB,CAAC,CAAC,qBAAqB,KAAK,iBAAiB,MAAM,CAAC,EAAE,CAAC,GAAG;YAC1D,CAAC,CAAC,qBAAqB,KAAK,SAAS,CAAC,CAAA;QACxC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;QAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,EAAE,KAAK,SAAS;YAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACpC,CAAC;CACF;AAgCD,8DAA8D;AAE9D;;;;;;;;GAQG;AACH,MAAM,UAAU,MAAM,CAAC,MAAc,EAAE,GAAoB;IACzD,MAAM,IAAI,GAAG,MAAM,CAAC,WAA2B,CAAA;IAC/C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;IAChC,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;AAC/B,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,OAAO,CAAC,MAAc,EAAE,GAAoB;IAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,WAA2B,CAAA;IAC/C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;QAC3D,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IACnB,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;AAChC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,OAAO,CAAC,MAAc,EAAE,GAAoB;IAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,WAA2B,CAAA;IAC/C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;QAC3D,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAA;IAC1C,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;AAChC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,IAAI,CAAC,IAAoB;IACvC,OAAO,CAAC,MAAc,EAAE,GAAoB,EAAQ,EAAE;QACpD,MAAM,IAAI,GAAG,MAAM,CAAC,WAA2B,CAAA;QAC/C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAA;QACxC,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA;IAChC,CAAC,CAAA;AACH,CAAC;AAED,8DAA8D;AAE9D,MAAM,OAAgB,KAAK;IACzB,8DAA8D;IAC9D,MAAM,CAAC,KAAK,CAAQ;IAEpB,yBAAyB;IACzB,MAAM,CAAC,UAAU,GAAG,IAAI,CAAA;IAExB,uCAAuC;IACvC,MAAM,CAAC,MAAM,GAAa,EAAE,CAAA;IAE5B;;;;OAIG;IACH,MAAM,CAAC,OAAO,GAAa,EAAE,CAAA;IAE7B;;;OAGG;IACH,MAAM,CAAC,OAAO,GAAa,EAAE,CAAA;IAE7B;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,KAAK,GAAmC,EAAE,CAAA;IAEjD;;;;;;;;;OASG;IACH,MAAM,CAAC,UAAU,GAA8B,EAAE,CAAA;IAEjD,uCAAuC;IACvC,MAAM,CAAC,QAAQ,GAAa,EAAE,CAAA;IAE9B;;;;;;;;OAQG;IACH,MAAM,CAAC,WAAW,GAAG,KAAK,CAAA;IAE1B,0DAA0D;IAC1D,EAAE;IACF,+DAA+D;IAC/D,oEAAoE;IACpE,qEAAqE;IAErE,gBAAgB;IAChB,eAAe,CAAW;IAC1B,gBAAgB;IAChB,gBAAgB,CAAW;IAE3B,0DAA0D;IAE1D,MAAM,CAAC,YAAY,GAA4B,EAAE,CAAA;IACjD,MAAM,CAAC,MAAM,GAA4B,EAAE,CAAA;IAE3C,0DAA0D;IAE1D,gBAAgB;IACR,MAAM,CAAC,UAAU,GAAoB,EAAE,CAAA;IAE/C,gBAAgB;IAChB,8DAA8D;IACtD,MAAM,CAAC,UAAU,GAAoD,IAAI,GAAG,EAAE,CAAA;IAEtF,+EAA+E;IACvE,MAAM,CAAC,YAAY,GAAG,KAAK,CAAA;IAEnC,MAAM,CAAC,OAAO,CAAC,aAAsC;QACnD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;QACtB,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,aAAa,EAAE,CAAC,CAAA;IAC3C,CAAC;IAED,8DAA8D;IAC9D,MAAM,CAAC,EAAE,CAAC,KAAiB,EAAE,OAAgC;QAC3D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAA;QAC7B,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;QAC7C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAClB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAClC,CAAC;IAED,8DAA8D;IACtD,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAiB,EAAE,GAAG,IAAW;QAC/D,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpF,+DAA+D;YAC/D,OAAO,IAAI,CAAC,CAAC,CAAC,CAAA;QAChB,CAAC;QAED,mEAAmE;QACnE,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QAEpB,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAA;QACjG,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,KAA4B,CAA+C,CAAA;YAC9F,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;gBAC3C,IAAI,GAAG,KAAK,KAAK;oBAAE,OAAO,KAAK,CAAA;gBAC/B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;oBAAE,MAAM,GAAG,GAAG,CAAA;YAChF,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC;YACxE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACpC,CAAC,CAAC,EAAE,CAAA;QACN,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;YAC3B,mEAAmE;YACnE,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAA;YAC7B,IAAI,GAAG,KAAK,KAAK;gBAAE,OAAO,KAAK,CAAA;YAC/B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,MAAM,GAAG,GAAG,CAAA;QAChF,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,cAAc;QACnB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAA;IAC7B,CAAC;IAED,0DAA0D;IAE1D,MAAM,CAAC,QAAQ;QACb,OAAO,IAAI,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAA;IACpD,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,OAAO,CAAkC,MAAe;QAC7D,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QACxD,IAAI,MAAM,YAAY,KAAK,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI;YAAE,OAAO,MAAyB,CAAA;QAC5F,MAAM,IAAI,GAAG,IAA4C,CAAA;QACzD,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAA;QAC3B,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAC/B,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,kFAAkF;IAC1E,MAAM,CAAC,YAAY,CAAyB,IAAO,EAAE,EAAiC;QAC5F,MAAM,UAAU,GAAI,IAAoB,CAAA;QACxC,MAAM,IAAI,GAAU,CAAC,CAAU,EAAmB,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAoB,CAAA;QACxG,MAAM,SAAS,GAAK,CAAC,CAAU,EAA0B,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACtF,MAAM,QAAQ,GAAM,CAAC,EAAa,EAAsB,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAEvE,MAAM,KAAK,GAAkC,IAAI,KAAK,CAAC,EAAY,EAAE;YACnE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;gBACxB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAY,CAAA;gBAC5D,IAAI,OAAO,KAAK,KAAK,UAAU;oBAAE,OAAO,KAAK,CAAA;gBAE7C,QAAQ,IAAI,EAAE,CAAC;oBACb,KAAK,MAAM;wBACT,OAAO,KAAK,EAAE,EAAmB,EAAmC,EAAE,CACpE,SAAS,CAAC,MAAO,MAAwC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;oBACvE,KAAK,OAAO;wBACV,OAAO,KAAK,IAAqC,EAAE,CACjD,SAAS,CAAC,MAAO,MAAwC,CAAC,KAAK,EAAE,CAAC,CAAA;oBACtE,KAAK,KAAK;wBACR,OAAO,KAAK,IAAgC,EAAE,CAC5C,QAAQ,CAAC,MAAO,MAAwC,CAAC,GAAG,EAAE,CAAC,CAAA;oBACnE,KAAK,KAAK;wBACR,OAAO,KAAK,IAAgC,EAAE,CAC5C,QAAQ,CAAC,MAAO,MAAwC,CAAC,GAAG,EAAE,CAAC,CAAA;oBACnE,KAAK,UAAU;wBACb,OAAO,KAAK,EAAE,IAAa,EAAE,OAAgB,EAA6C,EAAE;4BAC1F,MAAM,CAAC,GAAG,MAAO,MAAwC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;4BACtF,OAAO,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAA;wBACzC,CAAC,CAAA;oBACH,KAAK,QAAQ;wBACX,OAAO,KAAK,EAAE,IAA8B,EAA4B,EAAE,CACxE,IAAI,CAAC,MAAO,MAAwC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;oBACtE,KAAK,QAAQ;wBACX,OAAO,KAAK,EAAE,EAAmB,EAAE,IAA8B,EAA4B,EAAE,CAC7F,IAAI,CAAC,MAAO,MAAwC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAA;oBAC1E,KAAK,SAAS;wBACZ,OAAO,KAAK,EAAE,EAAmB,EAA4B,EAAE,CAC7D,IAAI,CAAC,MAAO,MAAwC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;oBACrE;wBACE,yEAAyE;wBACzE,4DAA4D;wBAC5D,OAAO,CAAC,GAAG,IAAe,EAAW,EAAE;4BACrC,iEAAiE;4BACjE,MAAM,MAAM,GAAI,KAAsC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;4BAC1E,OAAO,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAA;wBAC3C,CAAC,CAAA;gBACL,CAAC;YACH,CAAC;SACF,CAAkC,CAAA;QAEnC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,CAAC,KAAK;QACV,aAAa,CAAC,QAAQ,CAAC,IAA+B,CAAC,CAAA;QACvD,MAAM,UAAU,GAAG,IAAoB,CAAA;QACvC,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAA;QACrC,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,CAAA;QAC5C,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAA;QAExC,MAAM,WAAW,GAAG,GAAkC,EAAE;YACtD,IAAI,GAAG,GAAG,aAAa,CAAC,UAAU,EAAE,CAAC,KAAK,CAAkB,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;YAClF,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;gBAC3B,8DAA8D;gBAC7D,GAAW,CAAC,kBAAkB,EAAE,EAAE,CAAA;YACrC,CAAC;YACD,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBACnC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAkC,CAAA;gBACrD,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACtC,CAAC,CAAA;QAED,MAAM,OAAO,GAAG,CAAC,CAAgC,EAA+K,EAAE;YAChO,8DAA8D;YAC9D,MAAM,QAAQ,GAAG,CAAQ,CAAA;YACzB,QAAQ,CAAC,KAAK,GAAG,CAAC,IAAY,EAAE,GAAG,IAAe,EAAE,EAAE;gBACpD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;gBACjC,IAAI,CAAC,OAAO;oBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,uBAAuB,UAAU,CAAC,IAAI,GAAG,CAAC,CAAA;gBACrG,OAAO,OAAO,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAA;YACnC,CAAC,CAAA;YACD,QAAQ,CAAC,kBAAkB,GAAG,CAAC,IAAY,EAAE,EAAE;gBAC7C,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBACxB,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;YAC/B,CAAC,CAAA;YACD,+DAA+D;YAC/D,OAAO,QAAQ,CAAA;QACjB,CAAC,CAAA;QAED,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;IAC/B,CAAC;IAEO,MAAM,CAAC,EAAE,CAAyB,IAAO;QAC/C,aAAa,CAAC,QAAQ,CAAC,IAA+B,CAAC,CAAA;QACvD,MAAM,UAAU,GAAG,IAAoB,CAAA;QACvC,IAAI,CAAC,GAAG,aAAa,CAAC,UAAU,EAAE,CAAC,KAAK,CAAkB,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;QAChF,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;YAC3B,8DAA8D;YAC7D,CAAS,CAAC,kBAAkB,EAAE,EAAE,CAAA;QACnC,CAAC;QACD,KAAK,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAClE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAkC,CAAA;QACjD,CAAC;QACD,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACpC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAkC,EAAmB;QACpE,MAAM,IAAI,GAAG,IAAoB,CAAA;QACjC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC5C,IAAI,MAAM;YAAE,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,MAAiC,CAAC,CAAA;QACjF,OAAO,MAAM,CAAA;IACf,CAAC;IAED,2EAA2E;IAC3E,MAAM,CAAC,KAAK,CAAC,UAAU,CAAkC,EAAmB;QAC1E,MAAM,MAAM,GAAG,MAAO,IAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACxD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,kBAAkB,CAAE,IAAqB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAC1E,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,GAAG;QACd,MAAM,IAAI,GAAG,IAAoB,CAAA;QACjC,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAA;QAC1C,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAA4B,CAAC,CAAA;QACzF,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,KAAK;QAChB,MAAM,IAAI,GAAG,IAAoB,CAAA;QACjC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAA;QAC3C,IAAI,MAAM;YAAE,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,MAAiC,CAAC,CAAA;QACjF,OAAO,MAAM,CAAA;IACf,CAAC;IAED,4EAA4E;IAC5E,MAAM,CAAC,KAAK,CAAC,WAAW;QACtB,MAAM,MAAM,GAAG,MAAO,IAAyB,CAAC,KAAK,EAAE,CAAA;QACvD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,kBAAkB,CAAE,IAAqB,CAAC,IAAI,CAAC,CAAA;QACtE,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,KAAK;QACV,OAAO,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAA;IAC/B,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAkC,IAAY,EAAE,OAAgB;QACnF,MAAM,IAAI,GAAG,IAAoB,CAAA;QACjC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC3D,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI;YAAE,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAA4B,CAAC,CAAA;QAC7F,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,KAAK,CAAkC,MAAc,EAAE,KAAc;QAC1E,OAAO,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC5C,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,aAAa,CAExB,KAA+B,EAC/B,SAAmC,EAAE;QAErC,MAAM,IAAI,GAAG,IAAoB,CAAA;QACjC,IAAI,CAAC,GAAkC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;QACrD,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACvB,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,KAAK,EAAE,CAAA;QAChC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,QAAmC,CAAC,CAAA;YACvE,OAAO,QAAQ,CAAA;QACjB,CAAC;QACD,OAAQ,IAAyB,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,EAA8B,CAAC,CAAA;IAC/F,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,cAAc,CAEzB,KAA+B,EAC/B,MAAgC;QAEhC,MAAM,IAAI,GAAG,IAAoB,CAAA;QACjC,IAAI,CAAC,GAAkC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;QACrD,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACvB,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,KAAK,EAAwD,CAAA;QACtF,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAoB,CAAA;YACvD,OAAQ,IAAyB,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QACtD,CAAC;QACD,OAAQ,IAAyB,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,EAA8B,CAAC,CAAA;IAC/F,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,aAAa,CAAwB,EAAwB;QACxE,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAA;QACvG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QACxB,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAA;QACnB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAA;QAC9B,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAkC,IAA8B;QACjF,MAAM,IAAI,GAAG,IAAoB,CAAA;QACjC,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAA+B,CAAC,CAAA;QAElE,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QACjE,IAAI,cAAc,KAAK,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QAC7G,IAAI,cAAc,IAAI,OAAO,cAAc,KAAK,QAAQ;YAAE,OAAO,GAAG,cAAyC,CAAA;QAE7G,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC7D,IAAI,YAAY,KAAK,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QAClH,IAAI,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ;YAAE,OAAO,GAAG,YAAuC,CAAA;QAEvG,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAmC,CAAC,CAAA;QAE/E,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,MAAiC,CAAC,CAAA;QACnE,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAI,MAAiC,CAAC,CAAA;QACnE,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,IAAI,CAAkC,GAAG,SAAmB;QACjE,OAAO,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAA;IAC1C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAkC,EAAmB,EAAE,IAA8B;QACtG,MAAM,IAAI,GAAG,IAAoB,CAAA;QACjC,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAA+B,CAAC,CAAA;QAElE,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;QACrE,IAAI,cAAc,KAAK,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QAC7G,IAAI,cAAc,IAAI,OAAO,cAAc,KAAK,QAAQ;YAAE,OAAO,GAAG,cAAyC,CAAA;QAE7G,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC7D,IAAI,YAAY,KAAK,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QAClH,IAAI,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ;YAAE,OAAO,GAAG,YAAuC,CAAA;QAEvG,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,OAAmC,CAAC,CAAA;QAEnF,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,MAAiC,CAAC,CAAA;QACnE,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAI,MAAiC,CAAC,CAAA;QACnE,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAkC,EAAmB;QACtE,MAAM,IAAI,GAAG,IAAoB,CAAA;QACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;QACpD,IAAI,MAAM,KAAK,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QAErG,MAAM,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAC/B,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;IACtC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAkC,EAAmB;QACvE,MAAM,IAAI,GAAG,IAAoB,CAAA;QACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;QACrD,IAAI,MAAM,KAAK,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QAEtG,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC/C,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,MAAiC,CAAC,CAAA;QACpE,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,WAAW,CAAkC,EAAmB;QAC3E,MAAM,IAAI,GAAG,IAAoB,CAAA;QACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;QACpD,IAAI,MAAM,KAAK,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QAErG,MAAM,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QACpC,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;IACtC,CAAC;IAED,0DAA0D;IAE1D,0FAA0F;IAClF,OAAO;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,WAA2B,CAAA;QAC7C,MAAM,KAAK,GAAI,IAA2C,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC3E,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,SAAS,CAAA;QAC3D,OAAO,KAAwB,CAAA;IACjC,CAAC;IAED;;;;OAIG;IACK,OAAO;QACb,MAAM,GAAG,GAA4B,EAAE,CAAA;QACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAQ;YAC/B,IAAI,CAAC,KAAK,SAAS;gBAAE,SAAQ;YAC7B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACZ,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,WAA2B,CAAA;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;QAC3B,MAAM,EAAE,GAAK,IAAI,CAAC,OAAO,EAAE,CAAA;QAC3B,MAAM,SAAS,GAAG,EAAE,KAAK,SAAS;YAChC,CAAC,CAAC,MAAO,IAA8E,CAAC,MAAM,CAAC,IAAI,CAAC;YACpG,CAAC,CAAC,MAAO,IAAkG,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QAC9H,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QAC9B,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,CAAC,IAAmB;QACtB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACzB,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,GAAG,IAAI,CAAC,WAA2B,CAAA;QAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;QACzB,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,CAAC,IAAI,yBAAyB,CAAC,CAAA;QACxF,CAAC;QACD,MAAM,KAAK,GAAG,MAAO,IAA2E,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACzG,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QACvD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAQ,IAA2C,CAAC,CAAC,CAAC,CAAA;QAChF,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC1B,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,WAA2B,CAAA;QAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;QACzB,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,CAAC,IAAI,yBAAyB,CAAC,CAAA;QACvF,CAAC;QACD,MAAO,IAAqE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACzF,CAAC;IAED;;;;;;;;;OASG;IACH,SAAS,CAAC,SAAmB,EAAE;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,WAA2B,CAAA;QAC7C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,CAAC,CAAA;QACpG,MAAM,IAAI,GAAG,IAAiC,CAAA;QAC9C,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAA;QACxB,0EAA0E;QAC1E,uEAAuE;QACvE,0EAA0E;QAC1E,0EAA0E;QAC1E,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAK,KAAiC,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC1E,OAAQ,KAAiC,CAAC,CAAC,CAAC,CAAA;YAC9C,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,SAC3D;YAAC,KAA4C,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACvD,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;;OAGG;IACH,EAAE,CAAC,KAA+B;QAChC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QACrD,MAAM,IAAI,GAAI,IAAI,CAAC,WAA2B,CAAA;QAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,WAA2B,CAAA;QAC/C,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,QAAQ,EAAE;YAAE,OAAO,KAAK,CAAA;QACtD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;QACxB,MAAM,CAAC,GAAI,KAA+D,CAAC,OAAO,EAAE,CAAA;QACpF,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,CAAA;IACnC,CAAC;IAED,yBAAyB;IACzB,KAAK,CAAC,KAA+B;QACnC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IACxB,CAAC;IAED,8EAA8E;IAC9E,OAAO;QACL,MAAM,CAAC,GAAI,IAA2C,CAAC,WAAW,CAAC,CAAA;QACnE,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAA;IACtC,CAAC;IAED,0DAA0D;IAE1D,wFAAwF;IAChF,MAAM,CAAC,cAAc,CAAC,IAA6B;QACzD,MAAM,MAAM,GAA4B,EAAE,CAAA;QAE1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,IAAI,GAAG,GAAG,KAAK,CAAA;YAEf,8CAA8C;YAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;YACpC,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;gBACpB,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YACjC,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBACzC,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAW,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;YAC1D,CAAC;YAED,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;QACnB,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED,yDAAyD;IAEzD;;;;OAIG;IACH,WAAW,CAAC,IAAuB;QACjC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAC7C,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,IAAK,IAAI,CAAC,WAA4B,CAAC,MAAM,CAAC;aACvF,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9B,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,IAAuB;QAChC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAC7C,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,IAAK,IAAI,CAAC,WAA4B,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;QACrG,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,IAAc;QACvB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;QAC5B,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,IAAc;QACtB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,IAAc;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,IAAK,IAAI,CAAC,WAA4B,CAAC,OAAO,CAAA;QAChF,IAAI,CAAC,gBAAgB,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAA;QAC1C,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,IAAc;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,IAAK,IAAI,CAAC,WAA4B,CAAC,MAAM,CAAA;QAC9E,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAA;QACzC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,0DAA0D;IAE1D,MAAM;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC,WAA2B,CAAA;QAC7C,MAAM,GAAG,GAA4B,EAAE,CAAA;QACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACZ,CAAC;QAED,MAAM,MAAM,GAA4B,EAAE,CAAA;QAE1C,8CAA8C;QAC9C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;YAClC,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;gBACpB,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACpC,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;gBACvC,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAW,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;YACzD,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YACf,CAAC;QACH,CAAC;QAED,oEAAoE;QACpE,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,CAAC;gBAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;gBAC1C,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;oBACpB,MAAM,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;gBACpD,CAAC;YACH,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAA;QAC9D,MAAM,eAAe,GAAI,IAAI,CAAC,eAAe,IAAK,IAAI,CAAC,MAAM,CAAA;QAE7D,+CAA+C;QAC/C,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACxC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAC1F,CAAA;QACH,CAAC;QAED,0BAA0B;QAC1B,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CACrE,CAAA;IACH,CAAC;;AAGH,8DAA8D;AAC9D,oEAAoE;AACpE,sEAAsE;AACtE,gEAAgE;AAChE,wEAAwE;AACxE,oEAAoE;AACpE,iBAAiB;AACjB,6DAA6D;AAC7D,MAAM,uBAAuB,GAAc,KAAK,CAAA;AAChD,KAAK,uBAAuB,CAAA"}
|
package/dist/seeder.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base class for database seeders. Subclass and implement `run()`.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { Seeder } from '@rudderjs/orm'
|
|
7
|
+
* import { UserSeeder } from './UserSeeder.js'
|
|
8
|
+
* import { PostSeeder } from './PostSeeder.js'
|
|
9
|
+
*
|
|
10
|
+
* export default class DatabaseSeeder extends Seeder {
|
|
11
|
+
* async run(): Promise<void> {
|
|
12
|
+
* await this.call(UserSeeder)
|
|
13
|
+
* await this.call(PostSeeder)
|
|
14
|
+
* }
|
|
15
|
+
* }
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare abstract class Seeder {
|
|
19
|
+
abstract run(): void | Promise<void>;
|
|
20
|
+
/** Invoke another seeder from this one. Accepts a single class or an array. */
|
|
21
|
+
protected call(SeederClass: SeederConstructor | SeederConstructor[]): Promise<void>;
|
|
22
|
+
}
|
|
23
|
+
export type SeederConstructor = new () => Seeder;
|
|
24
|
+
//# sourceMappingURL=seeder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seeder.d.ts","sourceRoot":"","sources":["../src/seeder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,8BAAsB,MAAM;IAC1B,QAAQ,CAAC,GAAG,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAEpC,+EAA+E;cAC/D,IAAI,CAAC,WAAW,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAO1F;AAED,MAAM,MAAM,iBAAiB,GAAG,UAAU,MAAM,CAAA"}
|
package/dist/seeder.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base class for database seeders. Subclass and implement `run()`.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { Seeder } from '@rudderjs/orm'
|
|
7
|
+
* import { UserSeeder } from './UserSeeder.js'
|
|
8
|
+
* import { PostSeeder } from './PostSeeder.js'
|
|
9
|
+
*
|
|
10
|
+
* export default class DatabaseSeeder extends Seeder {
|
|
11
|
+
* async run(): Promise<void> {
|
|
12
|
+
* await this.call(UserSeeder)
|
|
13
|
+
* await this.call(PostSeeder)
|
|
14
|
+
* }
|
|
15
|
+
* }
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export class Seeder {
|
|
19
|
+
/** Invoke another seeder from this one. Accepts a single class or an array. */
|
|
20
|
+
async call(SeederClass) {
|
|
21
|
+
const classes = Array.isArray(SeederClass) ? SeederClass : [SeederClass];
|
|
22
|
+
for (const Cls of classes) {
|
|
23
|
+
const seeder = new Cls();
|
|
24
|
+
await seeder.run();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=seeder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seeder.js","sourceRoot":"","sources":["../src/seeder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAgB,MAAM;IAG1B,+EAA+E;IACrE,KAAK,CAAC,IAAI,CAAC,WAAoD;QACvE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;QACxE,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,CAAA;YACxB,MAAM,MAAM,CAAC,GAAG,EAAE,CAAA;QACpB,CAAC;IACH,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rudderjs/orm",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"dev": "tsc -p tsconfig.build.json --watch",
|
|
38
38
|
"typecheck": "tsc --noEmit",
|
|
39
39
|
"lint": "eslint src",
|
|
40
|
-
"test": "tsc -p tsconfig.test.json && node --test dist-test/index.test.js dist-test/commands/migrate.test.js; EXIT=$?; rm -rf dist-test; exit $EXIT",
|
|
40
|
+
"test": "tsc -p tsconfig.test.json && node --test dist-test/index.test.js dist-test/seeder.test.js dist-test/commands/migrate.test.js; EXIT=$?; rm -rf dist-test; exit $EXIT",
|
|
41
41
|
"clean": "rm -rf dist"
|
|
42
42
|
}
|
|
43
43
|
}
|