@orchestr-sh/orchestr 1.5.9 → 1.5.11

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.
Files changed (57) hide show
  1. package/README.md +275 -977
  2. package/dist/Database/Ensemble/Concerns/HasDynamicRelationGetters.d.ts +27 -0
  3. package/dist/Database/Ensemble/Concerns/HasDynamicRelationGetters.d.ts.map +1 -0
  4. package/dist/Database/Ensemble/Concerns/HasDynamicRelationGetters.js +109 -0
  5. package/dist/Database/Ensemble/Concerns/HasDynamicRelationGetters.js.map +1 -0
  6. package/dist/Database/Ensemble/Concerns/HasDynamicRelations.d.ts +59 -3
  7. package/dist/Database/Ensemble/Concerns/HasDynamicRelations.d.ts.map +1 -1
  8. package/dist/Database/Ensemble/Concerns/HasDynamicRelations.js +159 -31
  9. package/dist/Database/Ensemble/Concerns/HasDynamicRelations.js.map +1 -1
  10. package/dist/Database/Ensemble/Concerns/HasRelationships.d.ts +20 -0
  11. package/dist/Database/Ensemble/Concerns/HasRelationships.d.ts.map +1 -1
  12. package/dist/Database/Ensemble/Concerns/HasRelationships.js +57 -0
  13. package/dist/Database/Ensemble/Concerns/HasRelationships.js.map +1 -1
  14. package/dist/Database/Ensemble/Ensemble.d.ts.map +1 -1
  15. package/dist/Database/Ensemble/Ensemble.js +0 -4
  16. package/dist/Database/Ensemble/Ensemble.js.map +1 -1
  17. package/dist/Database/Ensemble/EnsembleBuilder.d.ts +1 -1
  18. package/dist/Database/Ensemble/EnsembleBuilder.d.ts.map +1 -1
  19. package/dist/Database/Ensemble/EnsembleBuilder.js +7 -10
  20. package/dist/Database/Ensemble/EnsembleBuilder.js.map +1 -1
  21. package/dist/Database/Ensemble/Relations/BelongsTo.d.ts +5 -0
  22. package/dist/Database/Ensemble/Relations/BelongsTo.d.ts.map +1 -1
  23. package/dist/Database/Ensemble/Relations/BelongsTo.js +8 -0
  24. package/dist/Database/Ensemble/Relations/BelongsTo.js.map +1 -1
  25. package/dist/Database/Ensemble/Relations/MorphMany.d.ts +97 -0
  26. package/dist/Database/Ensemble/Relations/MorphMany.d.ts.map +1 -0
  27. package/dist/Database/Ensemble/Relations/MorphMany.js +189 -0
  28. package/dist/Database/Ensemble/Relations/MorphMany.js.map +1 -0
  29. package/dist/Database/Ensemble/Relations/MorphMap.d.ts +59 -0
  30. package/dist/Database/Ensemble/Relations/MorphMap.d.ts.map +1 -0
  31. package/dist/Database/Ensemble/Relations/MorphMap.js +84 -0
  32. package/dist/Database/Ensemble/Relations/MorphMap.js.map +1 -0
  33. package/dist/Database/Ensemble/Relations/MorphOne.d.ts +93 -0
  34. package/dist/Database/Ensemble/Relations/MorphOne.d.ts.map +1 -0
  35. package/dist/Database/Ensemble/Relations/MorphOne.js +179 -0
  36. package/dist/Database/Ensemble/Relations/MorphOne.js.map +1 -0
  37. package/dist/Database/Ensemble/Relations/MorphTo.d.ts +98 -0
  38. package/dist/Database/Ensemble/Relations/MorphTo.d.ts.map +1 -0
  39. package/dist/Database/Ensemble/Relations/MorphTo.js +214 -0
  40. package/dist/Database/Ensemble/Relations/MorphTo.js.map +1 -0
  41. package/dist/Database/Ensemble/Relations/MorphToMany.d.ts +73 -0
  42. package/dist/Database/Ensemble/Relations/MorphToMany.d.ts.map +1 -0
  43. package/dist/Database/Ensemble/Relations/MorphToMany.js +164 -0
  44. package/dist/Database/Ensemble/Relations/MorphToMany.js.map +1 -0
  45. package/dist/Database/Ensemble/Relations/MorphedByMany.d.ts +29 -0
  46. package/dist/Database/Ensemble/Relations/MorphedByMany.d.ts.map +1 -0
  47. package/dist/Database/Ensemble/Relations/MorphedByMany.js +58 -0
  48. package/dist/Database/Ensemble/Relations/MorphedByMany.js.map +1 -0
  49. package/dist/Database/Ensemble/Relations/index.d.ts +6 -0
  50. package/dist/Database/Ensemble/Relations/index.d.ts.map +1 -1
  51. package/dist/Database/Ensemble/Relations/index.js +14 -1
  52. package/dist/Database/Ensemble/Relations/index.js.map +1 -1
  53. package/dist/index.d.ts +4 -1
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +13 -1
  56. package/dist/index.js.map +1 -1
  57. package/package.json +1 -1
@@ -0,0 +1,27 @@
1
+ /**
2
+ * HasDynamicRelationGetters
3
+ *
4
+ * Provides a way to access relationships as properties using getters
5
+ * This avoids Proxy issues and works with TypeScript
6
+ */
7
+ /**
8
+ * Decorator to convert a relationship method into a dynamic property
9
+ *
10
+ * @example
11
+ * class Post extends Ensemble {
12
+ * @DynamicRelation
13
+ * user(): BelongsTo<User, this> {
14
+ * return this.belongsTo(User, 'user_id');
15
+ * }
16
+ * }
17
+ *
18
+ * // Now you can use:
19
+ * const user = await post.user; // Instead of post.user().get()
20
+ */
21
+ export declare function DynamicRelation(value: any, context?: any): any;
22
+ /**
23
+ * Helper to define dynamic relation getters programmatically
24
+ * Use this if you can't use decorators
25
+ */
26
+ export declare function defineDynamicRelation<T>(target: T, relationName: string, relationMethod: () => any): void;
27
+ //# sourceMappingURL=HasDynamicRelationGetters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HasDynamicRelationGetters.d.ts","sourceRoot":"","sources":["../../../../src/Database/Ensemble/Concerns/HasDynamicRelationGetters.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,OA2ExD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,MAAM,EAAE,CAAC,EACT,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,GAAG,GACxB,IAAI,CA0BN"}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ /**
3
+ * HasDynamicRelationGetters
4
+ *
5
+ * Provides a way to access relationships as properties using getters
6
+ * This avoids Proxy issues and works with TypeScript
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.DynamicRelation = DynamicRelation;
10
+ exports.defineDynamicRelation = defineDynamicRelation;
11
+ /**
12
+ * Decorator to convert a relationship method into a dynamic property
13
+ *
14
+ * @example
15
+ * class Post extends Ensemble {
16
+ * @DynamicRelation
17
+ * user(): BelongsTo<User, this> {
18
+ * return this.belongsTo(User, 'user_id');
19
+ * }
20
+ * }
21
+ *
22
+ * // Now you can use:
23
+ * const user = await post.user; // Instead of post.user().get()
24
+ */
25
+ function DynamicRelation(value, context) {
26
+ // Modern decorator (TypeScript 5+ with context as second parameter)
27
+ if (context && context.kind === 'method') {
28
+ context.addInitializer(function () {
29
+ const methodName = context.name;
30
+ const originalMethod = value;
31
+ // Define a getter on the instance
32
+ Object.defineProperty(this, methodName, {
33
+ get() {
34
+ const relation = originalMethod.call(this);
35
+ const fn = function (...args) {
36
+ return relation;
37
+ };
38
+ fn.then = function (resolve, reject) {
39
+ return relation.getResults().then(resolve, reject);
40
+ };
41
+ fn.catch = function (reject) {
42
+ return relation.getResults().catch(reject);
43
+ };
44
+ fn.finally = function (onFinally) {
45
+ return relation.getResults().finally(onFinally);
46
+ };
47
+ return fn;
48
+ },
49
+ configurable: true,
50
+ enumerable: true
51
+ });
52
+ });
53
+ return value;
54
+ }
55
+ // Legacy decorator (target, propertyKey, descriptor)
56
+ const target = value;
57
+ const propertyKey = context;
58
+ const descriptor = arguments[2];
59
+ if (descriptor && typeof descriptor === 'object' && 'value' in descriptor) {
60
+ const originalMethod = descriptor.value;
61
+ delete descriptor.value;
62
+ delete descriptor.writable;
63
+ descriptor.get = function () {
64
+ const relation = originalMethod.call(this);
65
+ const fn = function (...args) {
66
+ return relation;
67
+ };
68
+ fn.then = function (resolve, reject) {
69
+ return relation.getResults().then(resolve, reject);
70
+ };
71
+ fn.catch = function (reject) {
72
+ return relation.getResults().catch(reject);
73
+ };
74
+ fn.finally = function (onFinally) {
75
+ return relation.getResults().finally(onFinally);
76
+ };
77
+ return fn;
78
+ };
79
+ return descriptor;
80
+ }
81
+ return value;
82
+ }
83
+ /**
84
+ * Helper to define dynamic relation getters programmatically
85
+ * Use this if you can't use decorators
86
+ */
87
+ function defineDynamicRelation(target, relationName, relationMethod) {
88
+ Object.defineProperty(target, relationName, {
89
+ get() {
90
+ const relation = relationMethod.call(this);
91
+ const fn = function (...args) {
92
+ return relation;
93
+ };
94
+ fn.then = function (resolve, reject) {
95
+ return relation.getResults().then(resolve, reject);
96
+ };
97
+ fn.catch = function (reject) {
98
+ return relation.getResults().catch(reject);
99
+ };
100
+ fn.finally = function (onFinally) {
101
+ return relation.getResults().finally(onFinally);
102
+ };
103
+ return fn;
104
+ },
105
+ enumerable: true,
106
+ configurable: true
107
+ });
108
+ }
109
+ //# sourceMappingURL=HasDynamicRelationGetters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HasDynamicRelationGetters.js","sourceRoot":"","sources":["../../../../src/Database/Ensemble/Concerns/HasDynamicRelationGetters.ts"],"names":[],"mappings":"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"}
@@ -4,9 +4,6 @@
4
4
  * Provides dynamic relationship access similar to PHP's __get magic method
5
5
  * Allows accessing relationships as properties: user.posts instead of user.posts().get()
6
6
  */
7
- /**
8
- * Wrap an Ensemble instance with a Proxy that automatically resolves relationships
9
- */
10
7
  export declare function withDynamicRelations<T extends object>(instance: T): T;
11
8
  /**
12
9
  * Mix dynamic relations functionality into a class
@@ -18,4 +15,63 @@ export declare abstract class HasDynamicRelationsMixin {
18
15
  */
19
16
  protected enableDynamicRelations(): this;
20
17
  }
18
+ /**
19
+ * Type for a dynamic relation that can be both called and awaited
20
+ * @deprecated Use the relation return type directly and let the decorator handle the dual behavior
21
+ */
22
+ export type DynamicRelationAccessor<T> = (() => any) & PromiseLike<T>;
23
+ /**
24
+ * Type helper for dynamic relations
25
+ * Use this to type relationship properties that work both as methods and promises
26
+ *
27
+ * @example
28
+ * class Post extends Ensemble {
29
+ * declare user: BelongsToAccessor<User, this>;
30
+ *
31
+ * @DynamicRelation
32
+ * user(): BelongsTo<User, this> {
33
+ * return this.belongsTo(User);
34
+ * }
35
+ * }
36
+ *
37
+ * const user = await post.user; // Type: User
38
+ * const query = post.user(); // Type: BelongsTo<User, Post>
39
+ */
40
+ export type BelongsToAccessor<TRelated extends import('../Ensemble').Ensemble, TParent extends import('../Ensemble').Ensemble> = TRelated | Promise<TRelated | null> | (() => import('../Relations/BelongsTo').BelongsTo<TRelated, TParent>);
41
+ export type HasOneAccessor<TRelated extends import('../Ensemble').Ensemble, TParent extends import('../Ensemble').Ensemble> = TRelated | Promise<TRelated | null> | (() => import('../Relations/HasOne').HasOne<TRelated, TParent>);
42
+ export type HasManyAccessor<TRelated extends import('../Ensemble').Ensemble, TParent extends import('../Ensemble').Ensemble> = TRelated[] | Promise<TRelated[]> | (() => import('../Relations/HasMany').HasMany<TRelated, TParent>);
43
+ export type BelongsToManyAccessor<TRelated extends import('../Ensemble').Ensemble, TParent extends import('../Ensemble').Ensemble> = TRelated[] | Promise<TRelated[]> | (() => import('../Relations/BelongsToMany').BelongsToMany<TRelated, TParent>);
44
+ export type MorphOneAccessor<TRelated extends import('../Ensemble').Ensemble, TParent extends import('../Ensemble').Ensemble> = TRelated | Promise<TRelated | null> | (() => import('../Relations/MorphOne').MorphOne<TRelated, TParent>);
45
+ export type MorphManyAccessor<TRelated extends import('../Ensemble').Ensemble, TParent extends import('../Ensemble').Ensemble> = TRelated[] | Promise<TRelated[]> | (() => import('../Relations/MorphMany').MorphMany<TRelated, TParent>);
46
+ export type MorphToAccessor<TRelated extends import('../Ensemble').Ensemble> = TRelated | Promise<TRelated | null> | (() => import('../Relations/MorphTo').MorphTo<any>);
47
+ export type MorphToManyAccessor<TRelated extends import('../Ensemble').Ensemble, TParent extends import('../Ensemble').Ensemble> = TRelated[] | Promise<TRelated[]> | (() => import('../Relations/MorphToMany').MorphToMany<TRelated, TParent>);
48
+ export type MorphedByManyAccessor<TRelated extends import('../Ensemble').Ensemble, TParent extends import('../Ensemble').Ensemble> = TRelated[] | Promise<TRelated[]> | (() => import('../Relations/MorphedByMany').MorphedByMany<TRelated, TParent>);
49
+ /**
50
+ * Decorator to convert a relationship method into a dynamic property
51
+ *
52
+ * @example
53
+ * class Post extends Ensemble {
54
+ * @DynamicRelation
55
+ * user!: DynamicRelationAccessor<User>;
56
+ * user(): BelongsTo<User, this> {
57
+ * return this.belongsTo(User, 'user_id');
58
+ * }
59
+ *
60
+ * @DynamicRelation
61
+ * comments!: DynamicRelationAccessor<Comment[]>;
62
+ * comments(): HasMany<Comment, this> {
63
+ * return this.hasMany(Comment);
64
+ * }
65
+ * }
66
+ *
67
+ * // Now you can use:
68
+ * const user = await post.user; // Type: User
69
+ * const comments = await post.comments; // Type: Comment[]
70
+ */
71
+ export declare function DynamicRelation(value: any, context?: any): any;
72
+ /**
73
+ * Helper to define dynamic relation getters programmatically
74
+ * Use this if you can't use decorators
75
+ */
76
+ export declare function defineDynamicRelation<T>(target: T, relationName: string, relationMethod: () => any): void;
21
77
  //# sourceMappingURL=HasDynamicRelations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HasDynamicRelations.d.ts","sourceRoot":"","sources":["../../../../src/Database/Ensemble/Concerns/HasDynamicRelations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiFH;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CA0DrE;AAED;;GAEG;AACH,8BAAsB,wBAAwB;IAC5C;;;OAGG;IACH,SAAS,CAAC,sBAAsB,IAAI,IAAI;CAGzC"}
1
+ {"version":3,"file":"HasDynamicRelations.d.ts","sourceRoot":"","sources":["../../../../src/Database/Ensemble/Concerns/HasDynamicRelations.ts"],"names":[],"mappings":"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"}
@@ -8,31 +8,33 @@
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.HasDynamicRelationsMixin = void 0;
10
10
  exports.withDynamicRelations = withDynamicRelations;
11
- const Relation_1 = require("../Relations/Relation");
11
+ exports.DynamicRelation = DynamicRelation;
12
+ exports.defineDynamicRelation = defineDynamicRelation;
13
+ const Relations_1 = require("../Relations");
12
14
  /**
13
15
  * Check if a value is a Relation instance
14
16
  */
15
17
  function isRelation(value) {
16
- return value && value instanceof Relation_1.Relation;
18
+ return value && value instanceof Relations_1.Relation;
17
19
  }
18
20
  /**
19
21
  * Create a hybrid function/promise for relationship access
20
22
  * This allows both: await user.posts AND user.posts().get()
21
23
  */
22
- function createRelationshipProxy(relation) {
24
+ function createRelationshipProxy(relationGetter) {
23
25
  // Create a function that returns the relation when called
24
26
  const fn = function (...args) {
25
- return relation;
27
+ return relationGetter();
26
28
  };
27
29
  // Make the function thenable (Promise-like) by adding then/catch methods
28
30
  fn.then = function (onFulfilled, onRejected) {
29
- return relation.getResults().then(onFulfilled, onRejected);
31
+ return relationGetter().getResults().then(onFulfilled, onRejected);
30
32
  };
31
33
  fn.catch = function (onRejected) {
32
- return relation.getResults().catch(onRejected);
34
+ return relationGetter().getResults().catch(onRejected);
33
35
  };
34
36
  fn.finally = function (onFinally) {
35
- return relation.getResults().finally(onFinally);
37
+ return relationGetter().getResults().finally(onFinally);
36
38
  };
37
39
  return fn;
38
40
  }
@@ -77,11 +79,39 @@ function shouldExcludeMethod(methodName) {
77
79
  /**
78
80
  * Wrap an Ensemble instance with a Proxy that automatically resolves relationships
79
81
  */
82
+ /**
83
+ * List of internal properties that should never be proxied
84
+ */
85
+ const INTERNAL_PROPERTIES = new Set([
86
+ 'attributes',
87
+ 'original',
88
+ 'relations',
89
+ 'exists',
90
+ 'wasRecentlyCreated',
91
+ 'table',
92
+ 'primaryKey',
93
+ 'incrementing',
94
+ 'keyType',
95
+ 'fillable',
96
+ 'guarded',
97
+ 'hidden',
98
+ 'visible',
99
+ 'appends',
100
+ 'casts',
101
+ 'timestamps',
102
+ 'connection',
103
+ 'dynamicRelations'
104
+ ]);
80
105
  function withDynamicRelations(instance) {
81
106
  return new Proxy(instance, {
82
107
  get(target, property, receiver) {
83
- // Get the original value
84
- const value = Reflect.get(target, property, receiver);
108
+ // Always pass through symbol properties and internal properties
109
+ // Use target directly, not receiver, to avoid proxy recursion
110
+ if (typeof property === 'symbol' || INTERNAL_PROPERTIES.has(property)) {
111
+ return target[property];
112
+ }
113
+ // Get the original value from target, not receiver
114
+ const value = target[property];
85
115
  // Check if dynamic relations are enabled for this instance
86
116
  const dynamicEnabled = target.dynamicRelations === true;
87
117
  // If dynamic relations are disabled or it's not a string property, return as-is
@@ -100,30 +130,22 @@ function withDynamicRelations(instance) {
100
130
  if (target.relationLoaded && target.relationLoaded(property)) {
101
131
  return target.getRelation(property);
102
132
  }
103
- // Try calling the method to see if it returns a Relation
104
- // We need to be careful here - only call methods that are likely relationships
105
- // Relationship methods are typically named like nouns (posts, user, comments)
106
- // and don't take required parameters
107
- try {
108
- // Bind the method to the target to maintain context
109
- const boundMethod = value.bind(target);
110
- // Get the function's parameter count
111
- const paramCount = value.length;
112
- // Only attempt to call if it has no required parameters (all optional)
113
- if (paramCount === 0) {
114
- const result = boundMethod();
115
- // If it returns a Relation, return a hybrid that works both as function and promise
116
- if (isRelation(result)) {
117
- return createRelationshipProxy(result);
118
- }
119
- }
120
- }
121
- catch (e) {
122
- // If calling the method fails, just return the original function
123
- // This handles cases where the method requires parameters or has side effects
133
+ // For relationship methods (zero-parameter functions), return a hybrid proxy
134
+ // The proxy will lazily call the method when needed (when awaited or called)
135
+ const boundMethod = value.bind(target);
136
+ const paramCount = value.length;
137
+ // Only create proxy for zero-parameter methods (potential relationships)
138
+ if (paramCount === 0) {
139
+ // Return a hybrid that can be both called and awaited
140
+ // We don't call the method here - we let the proxy call it when needed
141
+ return createRelationshipProxy(boundMethod);
124
142
  }
125
- // Return the original value for non-relationship properties
143
+ // Return the original value for methods with parameters
126
144
  return value;
145
+ },
146
+ // Pass through set operations without interference
147
+ set(target, property, value, receiver) {
148
+ return Reflect.set(target, property, value, receiver);
127
149
  }
128
150
  });
129
151
  }
@@ -140,4 +162,110 @@ class HasDynamicRelationsMixin {
140
162
  }
141
163
  }
142
164
  exports.HasDynamicRelationsMixin = HasDynamicRelationsMixin;
165
+ /**
166
+ * Decorator to convert a relationship method into a dynamic property
167
+ *
168
+ * @example
169
+ * class Post extends Ensemble {
170
+ * @DynamicRelation
171
+ * user!: DynamicRelationAccessor<User>;
172
+ * user(): BelongsTo<User, this> {
173
+ * return this.belongsTo(User, 'user_id');
174
+ * }
175
+ *
176
+ * @DynamicRelation
177
+ * comments!: DynamicRelationAccessor<Comment[]>;
178
+ * comments(): HasMany<Comment, this> {
179
+ * return this.hasMany(Comment);
180
+ * }
181
+ * }
182
+ *
183
+ * // Now you can use:
184
+ * const user = await post.user; // Type: User
185
+ * const comments = await post.comments; // Type: Comment[]
186
+ */
187
+ function DynamicRelation(value, context) {
188
+ // Modern decorator (TypeScript 5+ with context as second parameter)
189
+ if (context && context.kind === 'method') {
190
+ context.addInitializer(function () {
191
+ const methodName = context.name;
192
+ const originalMethod = value;
193
+ // Define a getter on the instance
194
+ Object.defineProperty(this, methodName, {
195
+ get() {
196
+ const relation = originalMethod.call(this);
197
+ const fn = function (...args) {
198
+ return relation;
199
+ };
200
+ fn.then = function (resolve, reject) {
201
+ return relation.getResults().then(resolve, reject);
202
+ };
203
+ fn.catch = function (reject) {
204
+ return relation.getResults().catch(reject);
205
+ };
206
+ fn.finally = function (onFinally) {
207
+ return relation.getResults().finally(onFinally);
208
+ };
209
+ return fn;
210
+ },
211
+ configurable: true,
212
+ enumerable: false
213
+ });
214
+ });
215
+ return value;
216
+ }
217
+ // Legacy decorator (target, propertyKey, descriptor)
218
+ const target = value;
219
+ const propertyKey = context;
220
+ const descriptor = arguments[2];
221
+ if (descriptor && typeof descriptor === 'object' && 'value' in descriptor) {
222
+ const originalMethod = descriptor.value;
223
+ delete descriptor.value;
224
+ delete descriptor.writable;
225
+ descriptor.get = function () {
226
+ const relation = originalMethod.call(this);
227
+ const fn = function (...args) {
228
+ return relation;
229
+ };
230
+ fn.then = function (resolve, reject) {
231
+ return relation.getResults().then(resolve, reject);
232
+ };
233
+ fn.catch = function (reject) {
234
+ return relation.getResults().catch(reject);
235
+ };
236
+ fn.finally = function (onFinally) {
237
+ return relation.getResults().finally(onFinally);
238
+ };
239
+ return fn;
240
+ };
241
+ return descriptor;
242
+ }
243
+ return value;
244
+ }
245
+ /**
246
+ * Helper to define dynamic relation getters programmatically
247
+ * Use this if you can't use decorators
248
+ */
249
+ function defineDynamicRelation(target, relationName, relationMethod) {
250
+ Object.defineProperty(target, relationName, {
251
+ get() {
252
+ const relation = relationMethod.call(this);
253
+ const fn = function (...args) {
254
+ return relation;
255
+ };
256
+ fn.then = function (resolve, reject) {
257
+ return relation.getResults().then(resolve, reject);
258
+ };
259
+ fn.catch = function (reject) {
260
+ return relation.getResults().catch(reject);
261
+ };
262
+ fn.finally = function (onFinally) {
263
+ return relation.getResults().finally(onFinally);
264
+ };
265
+ return fn;
266
+ },
267
+ enumerable: false,
268
+ configurable: true
269
+ });
270
+ }
143
271
  //# sourceMappingURL=HasDynamicRelations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HasDynamicRelations.js","sourceRoot":"","sources":["../../../../src/Database/Ensemble/Concerns/HasDynamicRelations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HasDynamicRelations.js","sourceRoot":"","sources":["../../../../src/Database/Ensemble/Concerns/HasDynamicRelations.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,26 @@ export declare abstract class HasRelationshipsMixin {
37
37
  * Define a many-to-many relationship
38
38
  */
39
39
  protected belongsToMany<TRelated extends Ensemble>(related: new () => TRelated, table?: string, foreignPivotKey?: string, relatedPivotKey?: string, parentKey?: string, relatedKey?: string, relation?: string): BelongsToMany<TRelated, any>;
40
+ /**
41
+ * Define a polymorphic one-to-one relationship
42
+ */
43
+ protected morphOne<TRelated extends Ensemble>(related: new () => TRelated, name: string, type?: string | null, id?: string | null, localKey?: string): import('../Relations/MorphOne').MorphOne<TRelated, any>;
44
+ /**
45
+ * Define a polymorphic one-to-many relationship
46
+ */
47
+ protected morphMany<TRelated extends Ensemble>(related: new () => TRelated, name: string, type?: string | null, id?: string | null, localKey?: string): import('../Relations/MorphMany').MorphMany<TRelated, any>;
48
+ /**
49
+ * Define a polymorphic inverse relationship
50
+ */
51
+ protected morphTo(name: string, type?: string, id?: string, ownerKey?: string): import('../Relations/MorphTo').MorphTo<any>;
52
+ /**
53
+ * Define a polymorphic many-to-many relationship
54
+ */
55
+ protected morphToMany<TRelated extends Ensemble>(related: new () => TRelated, name: string, table?: string, foreignPivotKey?: string, relatedPivotKey?: string, parentKey?: string, relatedKey?: string, inverse?: boolean): import('../Relations/MorphToMany').MorphToMany<TRelated, any>;
56
+ /**
57
+ * Define the inverse of a polymorphic many-to-many relationship
58
+ */
59
+ protected morphedByMany<TRelated extends Ensemble>(related: new () => TRelated, name: string, table?: string, foreignPivotKey?: string, relatedPivotKey?: string, parentKey?: string, relatedKey?: string): import('../Relations/MorphedByMany').MorphedByMany<TRelated, any>;
40
60
  /**
41
61
  * Get the joining table name for a many-to-many relation
42
62
  */
@@ -1 +1 @@
1
- {"version":3,"file":"HasRelationships.d.ts","sourceRoot":"","sources":["../../../../src/Database/Ensemble/Concerns/HasRelationships.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HasRelationships.d.ts","sourceRoot":"","sources":["../../../../src/Database/Ensemble/Concerns/HasRelationships.ts"],"names":[],"mappings":"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"}
@@ -68,6 +68,63 @@ class HasRelationshipsMixin {
68
68
  const finalRelatedKey = relatedKey || instance.getKeyName();
69
69
  return new BelongsToMany_1.BelongsToMany(instance.newQuery(), this, table, foreignPivotKey, relatedPivotKey, finalParentKey, finalRelatedKey, relation || '');
70
70
  }
71
+ /**
72
+ * Define a polymorphic one-to-one relationship
73
+ */
74
+ morphOne(related, name, type, id, localKey) {
75
+ const instance = new related();
76
+ const { MorphOne } = require('../Relations/MorphOne');
77
+ const finalLocalKey = localKey || this.getKeyName();
78
+ return new MorphOne(instance.newQuery(), this, name, type, id, finalLocalKey);
79
+ }
80
+ /**
81
+ * Define a polymorphic one-to-many relationship
82
+ */
83
+ morphMany(related, name, type, id, localKey) {
84
+ const instance = new related();
85
+ const { MorphMany } = require('../Relations/MorphMany');
86
+ const finalLocalKey = localKey || this.getKeyName();
87
+ return new MorphMany(instance.newQuery(), this, name, type, id, finalLocalKey);
88
+ }
89
+ /**
90
+ * Define a polymorphic inverse relationship
91
+ */
92
+ morphTo(name, type, id, ownerKey) {
93
+ const { MorphTo } = require('../Relations/MorphTo');
94
+ const finalType = type || `${name}_type`;
95
+ const finalId = id || `${name}_id`;
96
+ const finalOwnerKey = ownerKey || 'id';
97
+ // MorphTo needs special handling - creates query builder dynamically
98
+ return new MorphTo(this.newQuery(), this, finalId, finalType, finalOwnerKey, name);
99
+ }
100
+ /**
101
+ * Define a polymorphic many-to-many relationship
102
+ */
103
+ morphToMany(related, name, table, foreignPivotKey, relatedPivotKey, parentKey, relatedKey, inverse = false) {
104
+ const instance = new related();
105
+ const { MorphToMany } = require('../Relations/MorphToMany');
106
+ const finalTable = table || `${name}s`;
107
+ const finalForeignPivotKey = foreignPivotKey || `${name}_id`;
108
+ const finalRelatedPivotKey = relatedPivotKey || instance.getForeignKey();
109
+ const morphType = `${name}_type`;
110
+ const finalParentKey = parentKey || this.getKeyName();
111
+ const finalRelatedKey = relatedKey || instance.getKeyName();
112
+ return new MorphToMany(instance.newQuery(), this, name, finalTable, finalForeignPivotKey, finalRelatedPivotKey, morphType, finalParentKey, finalRelatedKey, '', inverse);
113
+ }
114
+ /**
115
+ * Define the inverse of a polymorphic many-to-many relationship
116
+ */
117
+ morphedByMany(related, name, table, foreignPivotKey, relatedPivotKey, parentKey, relatedKey) {
118
+ const instance = new related();
119
+ const { MorphedByMany } = require('../Relations/MorphedByMany');
120
+ const finalTable = table || `${name}s`;
121
+ const finalForeignPivotKey = foreignPivotKey || `${name}_id`;
122
+ const finalRelatedPivotKey = relatedPivotKey || instance.getForeignKey();
123
+ const morphType = `${name}_type`;
124
+ const finalParentKey = parentKey || this.getKeyName();
125
+ const finalRelatedKey = relatedKey || instance.getKeyName();
126
+ return new MorphedByMany(instance.newQuery(), this, name, finalTable, finalForeignPivotKey, finalRelatedPivotKey, morphType, finalParentKey, finalRelatedKey, '');
127
+ }
71
128
  /**
72
129
  * Get the joining table name for a many-to-many relation
73
130
  */
@@ -1 +1 @@
1
- {"version":3,"file":"HasRelationships.js","sourceRoot":"","sources":["../../../../src/Database/Ensemble/Concerns/HasRelationships.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HasRelationships.js","sourceRoot":"","sources":["../../../../src/Database/Ensemble/Concerns/HasRelationships.ts"],"names":[],"mappings":"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"}