@rudderjs/orm 1.0.0 → 1.2.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.
@@ -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":"AAMA,MAAM,MAAM,GAAG,GAAG,QAAQ,GAAG,SAAS,CAAA;AAItC,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,GAAG,GAAE,MAAsB,GAAG,GAAG,GAAG,IAAI,CAUjE;AAWD,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,CAwEN"}
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"}
@@ -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":"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"}
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
- export type ModelEvent = 'creating' | 'created' | 'updating' | 'updated' | 'deleting' | 'deleted' | 'restoring' | 'restored';
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 */
@@ -140,8 +159,27 @@ export declare abstract class Model {
140
159
  * }
141
160
  */
142
161
  static attributes: Record<string, Attribute>;
143
- /** Columns that are mass-assignable */
162
+ /**
163
+ * Columns that are mass-assignable via `Model.create()`, `Model.update()`,
164
+ * and `instance.fill()`. When non-empty, this is an allowlist — any other
165
+ * key in the incoming payload is silently dropped.
166
+ *
167
+ * Empty `fillable` + empty `guarded` (the default) means no enforcement —
168
+ * every key is passed through. Setting either opts in to mass-assignment
169
+ * protection.
170
+ *
171
+ * `instance.forceFill(data)` and direct property assignment + `save()`
172
+ * bypass this allowlist.
173
+ */
144
174
  static fillable: string[];
175
+ /**
176
+ * Columns that are NOT mass-assignable. Pass `['*']` to forbid all keys
177
+ * (the most restrictive setting — combine with `fillable` to allow specific
178
+ * exceptions, or use `forceFill()` to bypass).
179
+ *
180
+ * `fillable` (when non-empty) takes precedence over `guarded`.
181
+ */
182
+ static guarded: string[];
145
183
  /**
146
184
  * Enable soft deletes for this model. When true:
147
185
  * - `delete()` sets `deletedAt` instead of removing the record
@@ -152,38 +190,155 @@ export declare abstract class Model {
152
190
  * - Use `forceDelete()` to permanently remove a record
153
191
  */
154
192
  static softDeletes: boolean;
155
- /** @internal */
156
- private _instanceHidden?;
157
- /** @internal */
158
- private _instanceVisible?;
159
193
  static globalScopes: Record<string, ScopeFn>;
160
194
  static scopes: Record<string, ScopeFn>;
161
195
  /** @internal */
162
196
  private static _observers;
163
197
  /** @internal */
164
198
  private static _listeners;
199
+ /** @internal — true while a withoutEvents() block is active for this class. */
200
+ private static _eventsMuted;
165
201
  static observe(ObserverClass: new () => ModelObserver): void;
166
202
  static on(event: ModelEvent, handler: (...args: any[]) => any): void;
167
203
  private static _fireEvent;
168
204
  static clearObservers(): void;
169
205
  static getTable(this: typeof Model): string;
206
+ /**
207
+ * Build a Model instance from a plain database record.
208
+ *
209
+ * The returned object is `instanceof <ModelClass>`, has the model's
210
+ * prototype methods (`save`, `fill`, `refresh`, `delete`, etc.), and
211
+ * carries every column from `record` as an enumerable own property.
212
+ *
213
+ * Idempotent: passing an already-hydrated instance of the same class
214
+ * returns it unchanged. Passing `null`/`undefined` returns `null`.
215
+ *
216
+ * Most callers don't need to invoke this directly — query results
217
+ * (`find`, `first`, `all`, `paginate`, `where().get()`, etc.) are
218
+ * hydrated automatically. Use it when you have a raw record from
219
+ * outside the ORM (e.g. cached JSON, a fixture file) and want a
220
+ * working Model instance.
221
+ */
222
+ static hydrate<T extends typeof Model>(this: T, record: unknown): InstanceType<T> | null;
223
+ /** @internal — wrap a QueryBuilder so its read methods return Model instances. */
224
+ private static _hydratingQb;
170
225
  static query<T extends typeof Model>(this: T): QueryBuilder<InstanceType<T>> & {
171
226
  scope(name: string, ...args: unknown[]): QueryBuilder<InstanceType<T>>;
172
227
  withoutGlobalScope(name: string): QueryBuilder<InstanceType<T>>;
173
228
  };
174
229
  private static _q;
175
230
  static find<T extends typeof Model>(this: T, id: number | string): Promise<InstanceType<T> | null>;
231
+ /** Like `find()`, but throws `ModelNotFoundError` if no record matches. */
232
+ static findOrFail<T extends typeof Model>(this: T, id: number | string): Promise<InstanceType<T>>;
176
233
  static all<T extends typeof Model>(this: T): Promise<InstanceType<T>[]>;
177
234
  static first<T extends typeof Model>(this: T): Promise<InstanceType<T> | null>;
235
+ /** Like `first()`, but throws `ModelNotFoundError` if no record matches. */
236
+ static firstOrFail<T extends typeof Model>(this: T): Promise<InstanceType<T>>;
178
237
  static count<T extends typeof Model>(this: T): Promise<number>;
179
238
  static paginate<T extends typeof Model>(this: T, page: number, perPage?: number): Promise<PaginatedResult<InstanceType<T>>>;
180
239
  static where<T extends typeof Model>(this: T, column: string, value: unknown): QueryBuilder<InstanceType<T>>;
240
+ /**
241
+ * Find a record by attributes; if none exists, create one with `attrs` merged with `values`.
242
+ * Returns the existing or newly-created record.
243
+ */
244
+ static firstOrCreate<T extends typeof Model>(this: T, attrs: Partial<InstanceType<T>>, values?: Partial<InstanceType<T>>): Promise<InstanceType<T>>;
245
+ /**
246
+ * Find a record by attributes; if found, update it with `values`. If not, create it
247
+ * with `attrs` merged with `values`. Returns the upserted record.
248
+ */
249
+ static updateOrCreate<T extends typeof Model>(this: T, attrs: Partial<InstanceType<T>>, values: Partial<InstanceType<T>>): Promise<InstanceType<T>>;
250
+ /**
251
+ * Run `fn` with all observer / listener firing muted for this model class.
252
+ * Useful for bulk seeding or tests where lifecycle hooks would interfere.
253
+ */
254
+ static withoutEvents<T>(this: typeof Model, fn: () => T | Promise<T>): Promise<T>;
255
+ /**
256
+ * @internal — true when `key` is mass-assignable under this class's
257
+ * `fillable` / `guarded` configuration.
258
+ *
259
+ * Rules (mirrors Laravel Eloquent):
260
+ * 1. Both `fillable` and `guarded` empty → all keys pass (no enforcement).
261
+ * 2. `fillable` non-empty → allowlist; any key outside it is rejected.
262
+ * 3. Otherwise `guarded` applies; `['*']` rejects everything; specific keys reject only those.
263
+ */
264
+ private static _isFillable;
265
+ /**
266
+ * @internal — drop keys that are not mass-assignable. When neither
267
+ * `fillable` nor `guarded` is set, the input is returned unchanged.
268
+ */
269
+ private static _filterFillable;
181
270
  static create<T extends typeof Model>(this: T, data: Partial<InstanceType<T>>): Promise<InstanceType<T>>;
271
+ /** @internal — create path that skips the fillable filter. Used by `save()`. */
272
+ private static _doCreate;
182
273
  static with<T extends typeof Model>(this: T, ...relations: string[]): QueryBuilder<InstanceType<T>>;
183
274
  static update<T extends typeof Model>(this: T, id: number | string, data: Partial<InstanceType<T>>): Promise<InstanceType<T>>;
275
+ /** @internal — update path that skips the fillable filter. Used by `save()`. */
276
+ private static _doUpdate;
184
277
  static delete<T extends typeof Model>(this: T, id: number | string): Promise<void>;
185
278
  static restore<T extends typeof Model>(this: T, id: number | string): Promise<InstanceType<T>>;
186
279
  static forceDelete<T extends typeof Model>(this: T, id: number | string): Promise<void>;
280
+ /** @internal — pull the primary-key value from this instance, or `undefined` if unset. */
281
+ private _getKey;
282
+ /**
283
+ * @internal — own enumerable data fields, with framework-internal `_` keys
284
+ * stripped and `undefined` values dropped so a class-declared but never-set
285
+ * field (`id!: number`) doesn't leak into a create/update payload.
286
+ */
287
+ private _toData;
288
+ /**
289
+ * Persist this instance. Inserts when the primary key is unset; otherwise updates.
290
+ *
291
+ * Goes through the static `create()` / `update()` path so observers, casts,
292
+ * and mutators all fire. The instance is mutated in place with the canonical
293
+ * fields returned by the database (default values, generated ids, computed columns)
294
+ * and returned for chaining.
295
+ */
296
+ save(): Promise<this>;
297
+ /**
298
+ * Mass-assign a partial set of attributes onto this instance. Does not persist —
299
+ * call `save()` afterwards. Returns `this` for chaining.
300
+ *
301
+ * Drops keys that aren't mass-assignable under the class's `fillable` /
302
+ * `guarded` configuration. Use `forceFill()` to bypass.
303
+ */
304
+ fill(data: Partial<this>): this;
305
+ /**
306
+ * Mass-assign attributes without applying the `fillable` / `guarded` filter.
307
+ * Use when you trust the source (factory output, internal sync, fixture data)
308
+ * and want every key on the instance regardless of mass-assignment protection.
309
+ */
310
+ forceFill(data: Partial<this>): this;
311
+ /**
312
+ * Re-read this instance from the database, replacing in-place with fresh
313
+ * column values. Throws `ModelNotFoundError` if the row no longer exists.
314
+ * Useful after triggers, generated columns, or a parallel update from another process.
315
+ */
316
+ refresh(): Promise<this>;
317
+ /**
318
+ * Delete this instance from the database. Soft-deletes when `static softDeletes`
319
+ * is enabled. Routes through the static `delete()` so observers fire.
320
+ */
321
+ delete(): Promise<void>;
322
+ /**
323
+ * Clone this instance into a new, unsaved copy — the primary key and the
324
+ * standard timestamp columns are dropped, and any keys passed in `except`
325
+ * are also stripped. Call `save()` on the returned instance to persist.
326
+ *
327
+ * @example
328
+ * const draft = post.replicate(['publishedAt'])
329
+ * draft.title = 'Copy: ' + draft.title
330
+ * await draft.save()
331
+ */
332
+ replicate(except?: string[]): this;
333
+ /**
334
+ * True when `other` represents the same record — same model class (by table)
335
+ * and same primary key.
336
+ */
337
+ is(other: Model | null | undefined): boolean;
338
+ /** Inverse of `is()`. */
339
+ isNot(other: Model | null | undefined): boolean;
340
+ /** True when this instance has been soft-deleted (its `deletedAt` is set). */
341
+ trashed(): boolean;
187
342
  /** @internal — apply cast setters and attribute mutators to an incoming data payload */
188
343
  private static _applyMutators;
189
344
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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.
@@ -178,8 +198,27 @@ export class Model {
178
198
  * }
179
199
  */
180
200
  static attributes = {};
181
- /** Columns that are mass-assignable */
201
+ /**
202
+ * Columns that are mass-assignable via `Model.create()`, `Model.update()`,
203
+ * and `instance.fill()`. When non-empty, this is an allowlist — any other
204
+ * key in the incoming payload is silently dropped.
205
+ *
206
+ * Empty `fillable` + empty `guarded` (the default) means no enforcement —
207
+ * every key is passed through. Setting either opts in to mass-assignment
208
+ * protection.
209
+ *
210
+ * `instance.forceFill(data)` and direct property assignment + `save()`
211
+ * bypass this allowlist.
212
+ */
182
213
  static fillable = [];
214
+ /**
215
+ * Columns that are NOT mass-assignable. Pass `['*']` to forbid all keys
216
+ * (the most restrictive setting — combine with `fillable` to allow specific
217
+ * exceptions, or use `forceFill()` to bypass).
218
+ *
219
+ * `fillable` (when non-empty) takes precedence over `guarded`.
220
+ */
221
+ static guarded = [];
183
222
  /**
184
223
  * Enable soft deletes for this model. When true:
185
224
  * - `delete()` sets `deletedAt` instead of removing the record
@@ -191,10 +230,14 @@ export class Model {
191
230
  */
192
231
  static softDeletes = false;
193
232
  // ── Instance-level serialization overrides ─────────────
233
+ //
234
+ // True ECMAScript private fields (`#`) so they don't appear in
235
+ // `Object.entries(this)` / object spread / `JSON.stringify` — keeps
236
+ // hydrated instances clean wire-format equivalents of plain records.
194
237
  /** @internal */
195
- _instanceHidden;
238
+ #instanceHidden;
196
239
  /** @internal */
197
- _instanceVisible;
240
+ #instanceVisible;
198
241
  // ── Scopes ─────────────────────────────────────────────
199
242
  static globalScopes = {};
200
243
  static scopes = {};
@@ -204,6 +247,8 @@ export class Model {
204
247
  /** @internal */
205
248
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
206
249
  static _listeners = new Map();
250
+ /** @internal — true while a withoutEvents() block is active for this class. */
251
+ static _eventsMuted = false;
207
252
  static observe(ObserverClass) {
208
253
  if (!Object.prototype.hasOwnProperty.call(this, '_observers')) {
209
254
  this._observers = [];
@@ -221,6 +266,10 @@ export class Model {
221
266
  }
222
267
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
223
268
  static async _fireEvent(event, ...args) {
269
+ if (Object.prototype.hasOwnProperty.call(this, '_eventsMuted') && this._eventsMuted) {
270
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
271
+ return args[0];
272
+ }
224
273
  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
225
274
  let result = args[0];
226
275
  const observers = Object.prototype.hasOwnProperty.call(this, '_observers') ? this._observers : [];
@@ -255,104 +304,303 @@ export class Model {
255
304
  static getTable() {
256
305
  return this.table ?? `${this.name.toLowerCase()}s`;
257
306
  }
307
+ /**
308
+ * Build a Model instance from a plain database record.
309
+ *
310
+ * The returned object is `instanceof <ModelClass>`, has the model's
311
+ * prototype methods (`save`, `fill`, `refresh`, `delete`, etc.), and
312
+ * carries every column from `record` as an enumerable own property.
313
+ *
314
+ * Idempotent: passing an already-hydrated instance of the same class
315
+ * returns it unchanged. Passing `null`/`undefined` returns `null`.
316
+ *
317
+ * Most callers don't need to invoke this directly — query results
318
+ * (`find`, `first`, `all`, `paginate`, `where().get()`, etc.) are
319
+ * hydrated automatically. Use it when you have a raw record from
320
+ * outside the ORM (e.g. cached JSON, a fixture file) and want a
321
+ * working Model instance.
322
+ */
323
+ static hydrate(record) {
324
+ if (record === null || record === undefined)
325
+ return null;
326
+ if (record instanceof Model && record.constructor === this)
327
+ return record;
328
+ const Ctor = this;
329
+ const instance = new Ctor();
330
+ Object.assign(instance, record);
331
+ return instance;
332
+ }
333
+ /** @internal — wrap a QueryBuilder so its read methods return Model instances. */
334
+ static _hydratingQb(self, qb) {
335
+ const ModelClass = self;
336
+ const wrap = (r) => ModelClass.hydrate.call(self, r);
337
+ const wrapMaybe = (r) => r == null ? null : wrap(r);
338
+ const wrapMany = (rs) => rs.map(wrap);
339
+ const proxy = new Proxy(qb, {
340
+ get(target, prop, receiver) {
341
+ const value = Reflect.get(target, prop, receiver);
342
+ if (typeof value !== 'function')
343
+ return value;
344
+ switch (prop) {
345
+ case 'find':
346
+ return async (id) => wrapMaybe(await target.find(id));
347
+ case 'first':
348
+ return async () => wrapMaybe(await target.first());
349
+ case 'get':
350
+ return async () => wrapMany(await target.get());
351
+ case 'all':
352
+ return async () => wrapMany(await target.all());
353
+ case 'paginate':
354
+ return async (page, perPage) => {
355
+ const r = await target.paginate(page ?? 1, perPage);
356
+ return { ...r, data: wrapMany(r.data) };
357
+ };
358
+ case 'create':
359
+ return async (data) => wrap(await target.create(data));
360
+ case 'update':
361
+ return async (id, data) => wrap(await target.update(id, data));
362
+ case 'restore':
363
+ return async (id) => wrap(await target.restore(id));
364
+ default:
365
+ // Chainable methods (where/orderBy/with/...) typically return `target` —
366
+ // re-wrap so `Model.where('a', 1).first()` keeps hydrating.
367
+ return (...args) => {
368
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
369
+ const result = value.apply(target, args);
370
+ return result === target ? proxy : result;
371
+ };
372
+ }
373
+ },
374
+ });
375
+ return proxy;
376
+ }
258
377
  static query() {
259
378
  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
379
  const modelClass = this;
271
380
  const localScopes = modelClass.scopes;
272
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
273
- const enhanced = q;
274
- enhanced.scope = (name, ...args) => {
275
- const scopeFn = localScopes[name];
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());
381
+ const globalScopes = modelClass.globalScopes;
382
+ const excludedScopes = new Set();
383
+ const buildScoped = () => {
384
+ let raw = ModelRegistry.getAdapter().query(modelClass.getTable());
283
385
  if (modelClass.softDeletes) {
284
386
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
285
- rebuilt._enableSoftDeletes?.();
387
+ raw._enableSoftDeletes?.();
286
388
  }
287
389
  for (const [scopeName, scopeFn] of Object.entries(globalScopes)) {
288
390
  if (!excludedScopes.has(scopeName)) {
289
- rebuilt = scopeFn(rebuilt);
391
+ raw = scopeFn(raw);
290
392
  }
291
393
  }
394
+ return Model._hydratingQb(this, raw);
395
+ };
396
+ const enhance = (q) => {
292
397
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
293
- ;
294
- rebuilt.scope = enhanced.scope;
295
- rebuilt.withoutGlobalScope = enhanced.withoutGlobalScope;
296
- return rebuilt;
398
+ const enhanced = q;
399
+ enhanced.scope = (name, ...args) => {
400
+ const scopeFn = localScopes[name];
401
+ if (!scopeFn)
402
+ throw new Error(`[RudderJS ORM] Scope "${name}" is not defined on ${modelClass.name}.`);
403
+ return scopeFn(enhanced, ...args);
404
+ };
405
+ enhanced.withoutGlobalScope = (name) => {
406
+ excludedScopes.add(name);
407
+ return enhance(buildScoped());
408
+ };
409
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
410
+ return enhanced;
297
411
  };
298
- return enhanced;
412
+ return enhance(buildScoped());
299
413
  }
300
414
  static _q(self) {
301
415
  ModelRegistry.register(self);
302
- const q = ModelRegistry.getAdapter().query(self.getTable());
303
- if (self.softDeletes) {
416
+ const ModelClass = self;
417
+ let q = ModelRegistry.getAdapter().query(ModelClass.getTable());
418
+ if (ModelClass.softDeletes) {
304
419
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
305
420
  q._enableSoftDeletes?.();
306
421
  }
307
- let result = q;
308
- for (const [, scopeFn] of Object.entries(self.globalScopes)) {
309
- result = scopeFn(result);
422
+ for (const [, scopeFn] of Object.entries(ModelClass.globalScopes)) {
423
+ q = scopeFn(q);
310
424
  }
311
- return result;
425
+ return Model._hydratingQb(self, q);
312
426
  }
313
- static find(id) {
314
- return Model._q(this).find(id);
427
+ static async find(id) {
428
+ const self = this;
429
+ const record = await Model._q(this).find(id);
430
+ if (record)
431
+ await self._fireEvent('retrieved', record);
432
+ return record;
315
433
  }
316
- static all() {
317
- return Model._q(this).all();
434
+ /** Like `find()`, but throws `ModelNotFoundError` if no record matches. */
435
+ static async findOrFail(id) {
436
+ const record = await this.find(id);
437
+ if (!record)
438
+ throw new ModelNotFoundError(this.name, id);
439
+ return record;
318
440
  }
319
- static first() {
320
- return Model._q(this).first();
441
+ static async all() {
442
+ const self = this;
443
+ const records = await Model._q(this).all();
444
+ for (const r of records)
445
+ await self._fireEvent('retrieved', r);
446
+ return records;
447
+ }
448
+ static async first() {
449
+ const self = this;
450
+ const record = await Model._q(this).first();
451
+ if (record)
452
+ await self._fireEvent('retrieved', record);
453
+ return record;
454
+ }
455
+ /** Like `first()`, but throws `ModelNotFoundError` if no record matches. */
456
+ static async firstOrFail() {
457
+ const record = await this.first();
458
+ if (!record)
459
+ throw new ModelNotFoundError(this.name);
460
+ return record;
321
461
  }
322
462
  static count() {
323
463
  return Model._q(this).count();
324
464
  }
325
- static paginate(page, perPage) {
326
- return Model._q(this).paginate(page, perPage);
465
+ static async paginate(page, perPage) {
466
+ const self = this;
467
+ const result = await Model._q(this).paginate(page, perPage);
468
+ for (const r of result.data)
469
+ await self._fireEvent('retrieved', r);
470
+ return result;
327
471
  }
328
472
  static where(column, value) {
329
473
  return Model._q(this).where(column, value);
330
474
  }
475
+ /**
476
+ * Find a record by attributes; if none exists, create one with `attrs` merged with `values`.
477
+ * Returns the existing or newly-created record.
478
+ */
479
+ static async firstOrCreate(attrs, values = {}) {
480
+ const self = this;
481
+ let q = Model._q(this);
482
+ for (const [col, val] of Object.entries(attrs)) {
483
+ q = q.where(col, val);
484
+ }
485
+ const existing = await q.first();
486
+ if (existing) {
487
+ await self._fireEvent('retrieved', existing);
488
+ return existing;
489
+ }
490
+ return this.create({ ...attrs, ...values });
491
+ }
492
+ /**
493
+ * Find a record by attributes; if found, update it with `values`. If not, create it
494
+ * with `attrs` merged with `values`. Returns the upserted record.
495
+ */
496
+ static async updateOrCreate(attrs, values) {
497
+ const self = this;
498
+ let q = Model._q(this);
499
+ for (const [col, val] of Object.entries(attrs)) {
500
+ q = q.where(col, val);
501
+ }
502
+ const existing = await q.first();
503
+ if (existing) {
504
+ const id = existing[self.primaryKey];
505
+ return this.update(id, values);
506
+ }
507
+ return this.create({ ...attrs, ...values });
508
+ }
509
+ /**
510
+ * Run `fn` with all observer / listener firing muted for this model class.
511
+ * Useful for bulk seeding or tests where lifecycle hooks would interfere.
512
+ */
513
+ static async withoutEvents(fn) {
514
+ const previous = Object.prototype.hasOwnProperty.call(this, '_eventsMuted') ? this._eventsMuted : false;
515
+ this._eventsMuted = true;
516
+ try {
517
+ return await fn();
518
+ }
519
+ finally {
520
+ this._eventsMuted = previous;
521
+ }
522
+ }
523
+ /**
524
+ * @internal — true when `key` is mass-assignable under this class's
525
+ * `fillable` / `guarded` configuration.
526
+ *
527
+ * Rules (mirrors Laravel Eloquent):
528
+ * 1. Both `fillable` and `guarded` empty → all keys pass (no enforcement).
529
+ * 2. `fillable` non-empty → allowlist; any key outside it is rejected.
530
+ * 3. Otherwise `guarded` applies; `['*']` rejects everything; specific keys reject only those.
531
+ */
532
+ static _isFillable(key) {
533
+ if (this.fillable.length === 0 && this.guarded.length === 0)
534
+ return true;
535
+ if (this.fillable.length > 0)
536
+ return this.fillable.includes(key);
537
+ if (this.guarded.includes('*'))
538
+ return false;
539
+ return !this.guarded.includes(key);
540
+ }
541
+ /**
542
+ * @internal — drop keys that are not mass-assignable. When neither
543
+ * `fillable` nor `guarded` is set, the input is returned unchanged.
544
+ */
545
+ static _filterFillable(data) {
546
+ if (this.fillable.length === 0 && this.guarded.length === 0)
547
+ return data;
548
+ const out = {};
549
+ for (const [k, v] of Object.entries(data)) {
550
+ if (this._isFillable(k))
551
+ out[k] = v;
552
+ }
553
+ return out;
554
+ }
331
555
  static async create(data) {
556
+ const self = this;
557
+ const filtered = self._filterFillable(data);
558
+ return Model._doCreate.call(this, filtered);
559
+ }
560
+ /** @internal — create path that skips the fillable filter. Used by `save()`. */
561
+ static async _doCreate(data) {
332
562
  const self = this;
333
563
  let payload = self._applyMutators(data);
334
- const result = await self._fireEvent('creating', payload);
335
- if (result === false)
564
+ const creatingResult = await self._fireEvent('creating', payload);
565
+ if (creatingResult === false)
336
566
  throw new Error(`[RudderJS ORM] Create cancelled by observer on ${self.name}.`);
337
- if (result && typeof result === 'object')
338
- payload = result;
567
+ if (creatingResult && typeof creatingResult === 'object')
568
+ payload = creatingResult;
569
+ const savingResult = await self._fireEvent('saving', payload);
570
+ if (savingResult === false)
571
+ throw new Error(`[RudderJS ORM] Create cancelled by saving observer on ${self.name}.`);
572
+ if (savingResult && typeof savingResult === 'object')
573
+ payload = savingResult;
339
574
  const record = await Model._q(this).create(payload);
340
575
  await self._fireEvent('created', record);
576
+ await self._fireEvent('saved', record);
341
577
  return record;
342
578
  }
343
579
  static with(...relations) {
344
580
  return Model._q(this).with(...relations);
345
581
  }
346
582
  static async update(id, data) {
583
+ const self = this;
584
+ const filtered = self._filterFillable(data);
585
+ return Model._doUpdate.call(this, id, filtered);
586
+ }
587
+ /** @internal — update path that skips the fillable filter. Used by `save()`. */
588
+ static async _doUpdate(id, data) {
347
589
  const self = this;
348
590
  let payload = self._applyMutators(data);
349
- const result = await self._fireEvent('updating', id, payload);
350
- if (result === false)
591
+ const updatingResult = await self._fireEvent('updating', id, payload);
592
+ if (updatingResult === false)
351
593
  throw new Error(`[RudderJS ORM] Update cancelled by observer on ${self.name}.`);
352
- if (result && typeof result === 'object')
353
- payload = result;
594
+ if (updatingResult && typeof updatingResult === 'object')
595
+ payload = updatingResult;
596
+ const savingResult = await self._fireEvent('saving', payload);
597
+ if (savingResult === false)
598
+ throw new Error(`[RudderJS ORM] Update cancelled by saving observer on ${self.name}.`);
599
+ if (savingResult && typeof savingResult === 'object')
600
+ payload = savingResult;
354
601
  const record = await Model._q(this).update(id, payload);
355
602
  await self._fireEvent('updated', record);
603
+ await self._fireEvent('saved', record);
356
604
  return record;
357
605
  }
358
606
  static async delete(id) {
@@ -380,6 +628,160 @@ export class Model {
380
628
  await Model._q(this).forceDelete(id);
381
629
  await self._fireEvent('deleted', id);
382
630
  }
631
+ // ── Instance persistence methods ───────────────────────
632
+ /** @internal — pull the primary-key value from this instance, or `undefined` if unset. */
633
+ _getKey() {
634
+ const ctor = this.constructor;
635
+ const value = this[ctor.primaryKey];
636
+ if (value === undefined || value === null)
637
+ return undefined;
638
+ return value;
639
+ }
640
+ /**
641
+ * @internal — own enumerable data fields, with framework-internal `_` keys
642
+ * stripped and `undefined` values dropped so a class-declared but never-set
643
+ * field (`id!: number`) doesn't leak into a create/update payload.
644
+ */
645
+ _toData() {
646
+ const out = {};
647
+ for (const [k, v] of Object.entries(this)) {
648
+ if (k.startsWith('_'))
649
+ continue;
650
+ if (v === undefined)
651
+ continue;
652
+ out[k] = v;
653
+ }
654
+ return out;
655
+ }
656
+ /**
657
+ * Persist this instance. Inserts when the primary key is unset; otherwise updates.
658
+ *
659
+ * Goes through the static `create()` / `update()` path so observers, casts,
660
+ * and mutators all fire. The instance is mutated in place with the canonical
661
+ * fields returned by the database (default values, generated ids, computed columns)
662
+ * and returned for chaining.
663
+ */
664
+ async save() {
665
+ const ctor = this.constructor;
666
+ const data = this._toData();
667
+ const id = this._getKey();
668
+ // Bypass fillable: data was set via property assignment, not mass-assignment.
669
+ const persisted = id === undefined
670
+ ? await Model._doCreate.call(ctor, data)
671
+ : await Model._doUpdate.call(ctor, id, data);
672
+ Object.assign(this, persisted);
673
+ return this;
674
+ }
675
+ /**
676
+ * Mass-assign a partial set of attributes onto this instance. Does not persist —
677
+ * call `save()` afterwards. Returns `this` for chaining.
678
+ *
679
+ * Drops keys that aren't mass-assignable under the class's `fillable` /
680
+ * `guarded` configuration. Use `forceFill()` to bypass.
681
+ */
682
+ fill(data) {
683
+ const ctor = this.constructor;
684
+ const filtered = ctor._filterFillable(data);
685
+ Object.assign(this, filtered);
686
+ return this;
687
+ }
688
+ /**
689
+ * Mass-assign attributes without applying the `fillable` / `guarded` filter.
690
+ * Use when you trust the source (factory output, internal sync, fixture data)
691
+ * and want every key on the instance regardless of mass-assignment protection.
692
+ */
693
+ forceFill(data) {
694
+ Object.assign(this, data);
695
+ return this;
696
+ }
697
+ /**
698
+ * Re-read this instance from the database, replacing in-place with fresh
699
+ * column values. Throws `ModelNotFoundError` if the row no longer exists.
700
+ * Useful after triggers, generated columns, or a parallel update from another process.
701
+ */
702
+ async refresh() {
703
+ const ctor = this.constructor;
704
+ const id = this._getKey();
705
+ if (id === undefined) {
706
+ throw new Error(`[RudderJS ORM] Cannot refresh a ${ctor.name} without a primary key.`);
707
+ }
708
+ const fresh = await ctor.find(id);
709
+ if (!fresh)
710
+ throw new ModelNotFoundError(ctor.name, id);
711
+ for (const k of Object.keys(this)) {
712
+ if (!k.startsWith('_'))
713
+ delete this[k];
714
+ }
715
+ Object.assign(this, fresh);
716
+ return this;
717
+ }
718
+ /**
719
+ * Delete this instance from the database. Soft-deletes when `static softDeletes`
720
+ * is enabled. Routes through the static `delete()` so observers fire.
721
+ */
722
+ async delete() {
723
+ const ctor = this.constructor;
724
+ const id = this._getKey();
725
+ if (id === undefined) {
726
+ throw new Error(`[RudderJS ORM] Cannot delete a ${ctor.name} without a primary key.`);
727
+ }
728
+ await ctor.delete(id);
729
+ }
730
+ /**
731
+ * Clone this instance into a new, unsaved copy — the primary key and the
732
+ * standard timestamp columns are dropped, and any keys passed in `except`
733
+ * are also stripped. Call `save()` on the returned instance to persist.
734
+ *
735
+ * @example
736
+ * const draft = post.replicate(['publishedAt'])
737
+ * draft.title = 'Copy: ' + draft.title
738
+ * await draft.save()
739
+ */
740
+ replicate(except = []) {
741
+ const ctor = this.constructor;
742
+ const exclude = new Set([ctor.primaryKey, 'createdAt', 'updatedAt', 'deletedAt', ...except]);
743
+ const Ctor = ctor;
744
+ const clone = new Ctor();
745
+ // Drop class-declared field defaults that fall under `exclude`, otherwise
746
+ // a subclass with `id!: number` ships an `id: undefined` own property.
747
+ // Then drop any other undefined defaults so the clone reads as a freshly-
748
+ // built record from the source instance, not a half-initialized template.
749
+ for (const k of Object.keys(clone)) {
750
+ if (exclude.has(k) || clone[k] === undefined) {
751
+ delete clone[k];
752
+ }
753
+ }
754
+ for (const [k, v] of Object.entries(this)) {
755
+ if (k.startsWith('_') || exclude.has(k) || v === undefined)
756
+ continue;
757
+ clone[k] = v;
758
+ }
759
+ return clone;
760
+ }
761
+ /**
762
+ * True when `other` represents the same record — same model class (by table)
763
+ * and same primary key.
764
+ */
765
+ is(other) {
766
+ if (!other || !(other instanceof Model))
767
+ return false;
768
+ const here = this.constructor;
769
+ const there = other.constructor;
770
+ if (here.getTable() !== there.getTable())
771
+ return false;
772
+ const a = this._getKey();
773
+ const b = other._getKey();
774
+ return a !== undefined && a === b;
775
+ }
776
+ /** Inverse of `is()`. */
777
+ isNot(other) {
778
+ return !this.is(other);
779
+ }
780
+ /** True when this instance has been soft-deleted (its `deletedAt` is set). */
781
+ trashed() {
782
+ const v = this['deletedAt'];
783
+ return v !== null && v !== undefined;
784
+ }
383
785
  // ── Cast / Mutator helpers ─────────────────────────────
384
786
  /** @internal — apply cast setters and attribute mutators to an incoming data payload */
385
787
  static _applyMutators(data) {
@@ -406,7 +808,7 @@ export class Model {
406
808
  */
407
809
  makeVisible(keys) {
408
810
  const k = Array.isArray(keys) ? keys : [keys];
409
- this._instanceHidden = (this._instanceHidden ?? this.constructor.hidden)
811
+ this.#instanceHidden = (this.#instanceHidden ?? this.constructor.hidden)
410
812
  .filter(h => !k.includes(h));
411
813
  return this;
412
814
  }
@@ -416,7 +818,7 @@ export class Model {
416
818
  */
417
819
  makeHidden(keys) {
418
820
  const k = Array.isArray(keys) ? keys : [keys];
419
- this._instanceHidden = [...(this._instanceHidden ?? this.constructor.hidden), ...k];
821
+ this.#instanceHidden = [...(this.#instanceHidden ?? this.constructor.hidden), ...k];
420
822
  return this;
421
823
  }
422
824
  /**
@@ -424,7 +826,7 @@ export class Model {
424
826
  * Returns `this` for chaining.
425
827
  */
426
828
  setVisible(keys) {
427
- this._instanceVisible = keys;
829
+ this.#instanceVisible = keys;
428
830
  return this;
429
831
  }
430
832
  /**
@@ -432,7 +834,7 @@ export class Model {
432
834
  * Returns `this` for chaining.
433
835
  */
434
836
  setHidden(keys) {
435
- this._instanceHidden = keys;
837
+ this.#instanceHidden = keys;
436
838
  return this;
437
839
  }
438
840
  /**
@@ -440,8 +842,8 @@ export class Model {
440
842
  * Returns `this` for chaining.
441
843
  */
442
844
  mergeVisible(keys) {
443
- const base = this._instanceVisible ?? this.constructor.visible;
444
- this._instanceVisible = [...base, ...keys];
845
+ const base = this.#instanceVisible ?? this.constructor.visible;
846
+ this.#instanceVisible = [...base, ...keys];
445
847
  return this;
446
848
  }
447
849
  /**
@@ -449,16 +851,15 @@ export class Model {
449
851
  * Returns `this` for chaining.
450
852
  */
451
853
  mergeHidden(keys) {
452
- const base = this._instanceHidden ?? this.constructor.hidden;
453
- this._instanceHidden = [...base, ...keys];
854
+ const base = this.#instanceHidden ?? this.constructor.hidden;
855
+ this.#instanceHidden = [...base, ...keys];
454
856
  return this;
455
857
  }
456
858
  // ── toJSON ─────────────────────────────────────────────
457
859
  toJSON() {
458
860
  const ctor = this.constructor;
459
- const rawEntries = Object.entries(this).filter(([k]) => !k.startsWith('_instance'));
460
861
  const raw = {};
461
- for (const [k, v] of rawEntries) {
862
+ for (const [k, v] of Object.entries(this)) {
462
863
  raw[k] = v;
463
864
  }
464
865
  const result = {};
@@ -485,8 +886,8 @@ export class Model {
485
886
  }
486
887
  }
487
888
  // Determine effective visible / hidden lists
488
- const effectiveVisible = this._instanceVisible ?? ctor.visible;
489
- const effectiveHidden = this._instanceHidden ?? ctor.hidden;
889
+ const effectiveVisible = this.#instanceVisible ?? ctor.visible;
890
+ const effectiveHidden = this.#instanceHidden ?? ctor.hidden;
490
891
  // Apply visible (allowlist) — takes precedence
491
892
  if (effectiveVisible.length > 0) {
492
893
  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":"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;AAEtE,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;;AAqBH,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;IAE1D,gBAAgB;IACR,eAAe,CAAW;IAClC,gBAAgB;IACR,gBAAgB,CAAW;IAEnC,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,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,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,MAAM,CAAC,KAAK;QACV,aAAa,CAAC,QAAQ,CAAC,IAA+B,CAAC,CAAA;QACvD,IAAI,CAAC,GAAG,aAAa,CAAC,UAAU,EAAE,CAAC,KAAK,CACrC,IAAqB,CAAC,QAAQ,EAAE,CAClC,CAAA;QACD,IAAK,IAAqB,CAAC,WAAW,EAAE,CAAC;YACvC,8DAA8D;YAC7D,CAAS,CAAC,kBAAkB,EAAE,EAAE,CAAA;QACnC,CAAC;QAED,MAAM,YAAY,GAAI,IAAqB,CAAC,YAAY,CAAA;QACxD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAA;QAExC,KAAK,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACvD,CAAC,GAAG,OAAO,CAAC,CAAC,CAAkC,CAAA;QACjD,CAAC;QAED,MAAM,UAAU,GAAG,IAAoB,CAAA;QACvC,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAA;QAErC,8DAA8D;QAC9D,MAAM,QAAQ,GAAG,CAAQ,CAAA;QACzB,QAAQ,CAAC,KAAK,GAAG,CAAC,IAAY,EAAE,GAAG,IAAe,EAAE,EAAE;YACpD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;YACjC,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,uBAAuB,UAAU,CAAC,IAAI,GAAG,CAAC,CAAA;YACrG,OAAO,OAAO,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAA;QACnC,CAAC,CAAA;QACD,QAAQ,CAAC,kBAAkB,GAAG,CAAC,IAAY,EAAE,EAAE;YAC7C,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACxB,IAAI,OAAO,GAAG,aAAa,CAAC,UAAU,EAAE,CAAC,KAAK,CAAkB,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;YACtF,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;gBAC3B,8DAA8D;gBAC7D,OAAe,CAAC,kBAAkB,EAAE,EAAE,CAAA;YACzC,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,OAAO,GAAG,OAAO,CAAC,OAAO,CAAkC,CAAA;gBAC7D,CAAC;YACH,CAAC;YACD,8DAA8D;YAC9D,CAAC;YAAC,OAAe,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAEvC;YAAC,OAAe,CAAC,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB,CAAA;YAClE,OAAO,OAAO,CAAA;QAChB,CAAC,CAAA;QAED,OAAO,QAAQ,CAAA;IACjB,CAAC;IAEO,MAAM,CAAC,EAAE,CAAyB,IAAO;QAC/C,aAAa,CAAC,QAAQ,CAAC,IAA+B,CAAC,CAAA;QACvD,MAAM,CAAC,GAAG,aAAa,CAAC,UAAU,EAAE,CAAC,KAAK,CAAmB,IAAqB,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC9F,IAAK,IAAqB,CAAC,WAAW,EAAE,CAAC;YACvC,8DAA8D;YAC7D,CAAS,CAAC,kBAAkB,EAAE,EAAE,CAAA;QACnC,CAAC;QACD,IAAI,MAAM,GAAG,CAAC,CAAA;QACd,KAAK,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAE,IAAqB,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9E,MAAM,GAAG,OAAO,CAAC,MAAM,CAAkC,CAAA;QAC3D,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,IAAI,CAAkC,EAAmB;QAC9D,OAAO,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChC,CAAC;IAED,MAAM,CAAC,GAAG;QACR,OAAO,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAA;IAC7B,CAAC;IAED,MAAM,CAAC,KAAK;QACV,OAAO,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAA;IAC/B,CAAC;IAED,MAAM,CAAC,KAAK;QACV,OAAO,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAA;IAC/B,CAAC;IAED,MAAM,CAAC,QAAQ,CAAkC,IAAY,EAAE,OAAgB;QAC7E,OAAO,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC/C,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,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;QAClE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QACzD,IAAI,MAAM,KAAK,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QACrG,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,GAAG,MAAiC,CAAA;QAErF,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,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;QAClE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;QAC7D,IAAI,MAAM,KAAK,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QACrG,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,GAAG,MAAiC,CAAA;QAErF,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,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,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,GAAU,IAAI,CAAC,WAA2B,CAAA;QACpD,MAAM,UAAU,GAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAA;QAEpF,MAAM,GAAG,GAA4B,EAAE,CAAA;QACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC;YAChC,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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -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.0.0",
3
+ "version": "1.2.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
  }