velocious 1.0.445 → 1.0.447

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 (89) hide show
  1. package/README.md +1 -1
  2. package/build/configuration-types.js +2 -2
  3. package/build/database/pool/async-tracked-multi-connection.js +3 -1
  4. package/build/database/record/index.js +38 -38
  5. package/build/environment-handlers/node/cli/commands/generate/base-models.js +67 -1
  6. package/build/environment-handlers/node/cli/commands/generate/frontend-models.js +169 -0
  7. package/build/frontend-model-controller.js +44 -12
  8. package/build/frontend-model-resource/base-resource.js +519 -129
  9. package/build/frontend-models/base.js +417 -203
  10. package/build/frontend-models/preloader.js +7 -7
  11. package/build/frontend-models/query.js +18 -18
  12. package/build/frontend-models/use-created-event.js +1 -1
  13. package/build/frontend-models/use-destroyed-event.js +1 -1
  14. package/build/frontend-models/use-model-class-event.js +1 -1
  15. package/build/frontend-models/use-updated-event.js +1 -1
  16. package/build/frontend-models/websocket-channel.js +39 -3
  17. package/build/routes/resolver.js +17 -14
  18. package/build/src/configuration-types.d.ts +6 -6
  19. package/build/src/configuration-types.js +3 -3
  20. package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
  21. package/build/src/database/pool/async-tracked-multi-connection.js +5 -2
  22. package/build/src/database/record/index.d.ts +38 -38
  23. package/build/src/database/record/index.d.ts.map +1 -1
  24. package/build/src/database/record/index.js +39 -39
  25. package/build/src/environment-handlers/node/cli/commands/generate/base-models.d.ts +13 -0
  26. package/build/src/environment-handlers/node/cli/commands/generate/base-models.d.ts.map +1 -1
  27. package/build/src/environment-handlers/node/cli/commands/generate/base-models.js +59 -2
  28. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts +74 -0
  29. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts.map +1 -1
  30. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.js +155 -1
  31. package/build/src/frontend-model-controller.d.ts +2 -1
  32. package/build/src/frontend-model-controller.d.ts.map +1 -1
  33. package/build/src/frontend-model-controller.js +38 -14
  34. package/build/src/frontend-model-resource/base-resource.d.ts +196 -21
  35. package/build/src/frontend-model-resource/base-resource.d.ts.map +1 -1
  36. package/build/src/frontend-model-resource/base-resource.js +467 -112
  37. package/build/src/frontend-models/base.d.ts +232 -149
  38. package/build/src/frontend-models/base.d.ts.map +1 -1
  39. package/build/src/frontend-models/base.js +371 -201
  40. package/build/src/frontend-models/preloader.d.ts +10 -10
  41. package/build/src/frontend-models/preloader.d.ts.map +1 -1
  42. package/build/src/frontend-models/preloader.js +8 -8
  43. package/build/src/frontend-models/query.d.ts +8 -8
  44. package/build/src/frontend-models/query.d.ts.map +1 -1
  45. package/build/src/frontend-models/query.js +19 -19
  46. package/build/src/frontend-models/use-created-event.d.ts +2 -2
  47. package/build/src/frontend-models/use-created-event.d.ts.map +1 -1
  48. package/build/src/frontend-models/use-created-event.js +2 -2
  49. package/build/src/frontend-models/use-destroyed-event.d.ts +1 -1
  50. package/build/src/frontend-models/use-destroyed-event.d.ts.map +1 -1
  51. package/build/src/frontend-models/use-destroyed-event.js +2 -2
  52. package/build/src/frontend-models/use-model-class-event.d.ts +1 -1
  53. package/build/src/frontend-models/use-model-class-event.d.ts.map +1 -1
  54. package/build/src/frontend-models/use-model-class-event.js +2 -2
  55. package/build/src/frontend-models/use-updated-event.d.ts +1 -1
  56. package/build/src/frontend-models/use-updated-event.d.ts.map +1 -1
  57. package/build/src/frontend-models/use-updated-event.js +2 -2
  58. package/build/src/frontend-models/websocket-channel.d.ts +8 -0
  59. package/build/src/frontend-models/websocket-channel.d.ts.map +1 -1
  60. package/build/src/frontend-models/websocket-channel.js +35 -4
  61. package/build/src/routes/resolver.d.ts.map +1 -1
  62. package/build/src/routes/resolver.js +7 -4
  63. package/build/src/utils/model-scope.d.ts +4 -4
  64. package/build/src/utils/model-scope.d.ts.map +1 -1
  65. package/build/src/utils/model-scope.js +3 -3
  66. package/build/src/utils/ransack.d.ts +1 -1
  67. package/build/src/utils/ransack.d.ts.map +1 -1
  68. package/build/src/utils/ransack.js +2 -2
  69. package/build/utils/model-scope.js +2 -2
  70. package/build/utils/ransack.js +1 -1
  71. package/package.json +1 -1
  72. package/src/configuration-types.js +2 -2
  73. package/src/database/pool/async-tracked-multi-connection.js +3 -1
  74. package/src/database/record/index.js +38 -38
  75. package/src/environment-handlers/node/cli/commands/generate/base-models.js +67 -1
  76. package/src/environment-handlers/node/cli/commands/generate/frontend-models.js +169 -0
  77. package/src/frontend-model-controller.js +44 -12
  78. package/src/frontend-model-resource/base-resource.js +519 -129
  79. package/src/frontend-models/base.js +417 -203
  80. package/src/frontend-models/preloader.js +7 -7
  81. package/src/frontend-models/query.js +18 -18
  82. package/src/frontend-models/use-created-event.js +1 -1
  83. package/src/frontend-models/use-destroyed-event.js +1 -1
  84. package/src/frontend-models/use-model-class-event.js +1 -1
  85. package/src/frontend-models/use-updated-event.js +1 -1
  86. package/src/frontend-models/websocket-channel.js +39 -3
  87. package/src/routes/resolver.js +17 -14
  88. package/src/utils/model-scope.js +2 -2
  89. package/src/utils/ransack.js +1 -1
@@ -18,6 +18,14 @@
18
18
  * @property {import("../configuration-types.js").VelociousParams} [params] - Optional params override.
19
19
  * @property {import("../configuration-types.js").NormalizedFrontendModelResourceConfiguration | import("../configuration-types.js").FrontendModelResourceConfiguration} [resourceConfiguration] - Optional normalized resource configuration.
20
20
  */
21
+ /**
22
+ * Resolved frontend-model resource registration.
23
+ * @typedef {object} FrontendModelResolvedResourceConfiguration
24
+ * @property {import("../configuration-types.js").BackendProjectConfiguration} backendProject - Backend project owning the resource.
25
+ * @property {string} modelName - Frontend model name.
26
+ * @property {import("../configuration-types.js").FrontendModelResourceClassType} resourceClass - Resource class.
27
+ * @property {import("../configuration-types.js").NormalizedFrontendModelResourceConfiguration} resourceConfiguration - Normalized resource configuration.
28
+ */
21
29
  /**
22
30
  * Base class for backend frontend-model resources.
23
31
  * @template {typeof import("../database/record/index.js").default} [TModelClass=typeof import("../database/record/index.js").default]
@@ -211,10 +219,11 @@ export default class FrontendModelBaseResource<TModelClass extends typeof import
211
219
  /**
212
220
  * Runs create.
213
221
  * @param {Record<string, ?>} attributes - Create attributes.
214
- * @param {{controller?: ?, nestedAttributes?: Record<string, ?> | null}} [options] - Save options.
222
+ * @param {{attachments?: Record<string, ?> | null, controller?: ?, nestedAttributes?: Record<string, ?> | null}} [options] - Save options.
215
223
  * @returns {Promise<import("../database/record/index.js").default>} - Created model.
216
224
  */
217
225
  create(attributes: Record<string, unknown>, options?: {
226
+ attachments?: Record<string, unknown> | null;
218
227
  controller?: unknown;
219
228
  nestedAttributes?: Record<string, unknown> | null;
220
229
  }): Promise<import("../database/record/index.js").default>;
@@ -228,22 +237,24 @@ export default class FrontendModelBaseResource<TModelClass extends typeof import
228
237
  * Runs update.
229
238
  * @param {import("../database/record/index.js").default} model - Existing model.
230
239
  * @param {Record<string, ?>} attributes - Update attributes.
231
- * @param {{controller?: ?, nestedAttributes?: Record<string, ?> | null}} [options] - Save options.
240
+ * @param {{attachments?: Record<string, ?> | null, controller?: ?, nestedAttributes?: Record<string, ?> | null}} [options] - Save options.
232
241
  * @returns {Promise<import("../database/record/index.js").default>} - Updated model.
233
242
  */
234
243
  update(model: import("../database/record/index.js").default, attributes: Record<string, unknown>, options?: {
244
+ attachments?: Record<string, unknown> | null;
235
245
  controller?: unknown;
236
246
  nestedAttributes?: Record<string, unknown> | null;
237
247
  }): Promise<import("../database/record/index.js").default>;
238
248
  /**
239
249
  * Saves a model and applies nested attributes in one transaction.
240
- * @param {{filtered: Record<string, ?>, model: import("../database/record/index.js").default, options: {controller?: ?, nestedAttributes?: Record<string, ?> | null}, permit: {attributes: string[], nested: Record<string, ?>}}} args - Save arguments.
250
+ * @param {{filtered: Record<string, ?>, model: import("../database/record/index.js").default, options: {attachments?: Record<string, ?> | null, controller?: ?, nestedAttributes?: Record<string, ?> | null}, permit: {attributes: string[], nested: Record<string, ?>}}} args - Save arguments.
241
251
  * @returns {Promise<import("../database/record/index.js").default>} - Saved model.
242
252
  */
243
253
  _saveWithNestedAttributes({ filtered, model, options, permit }: {
244
254
  filtered: Record<string, unknown>;
245
255
  model: import("../database/record/index.js").default;
246
256
  options: {
257
+ attachments?: Record<string, unknown> | null;
247
258
  controller?: unknown;
248
259
  nestedAttributes?: Record<string, unknown> | null;
249
260
  };
@@ -259,6 +270,25 @@ export default class FrontendModelBaseResource<TModelClass extends typeof import
259
270
  * @returns {Promise<void>}
260
271
  */
261
272
  _assignWithVirtualSetters(model: import("../database/record/index.js").default, attributes: Record<string, unknown>): Promise<void>;
273
+ /**
274
+ * Splits attachment-named attributes into the attachment payload while preserving legacy callers
275
+ * that submitted attachments as normal frontend-model attributes.
276
+ * @param {Record<string, ?>} attributes - Incoming mutation attributes.
277
+ * @param {Record<string, ?> | null} attachments - Explicit attachment payload.
278
+ * @returns {{attributes: Record<string, ?>, attachments: Record<string, ?> | null}} Attributes with attachment keys removed and merged attachment payload.
279
+ */
280
+ _extractAttachmentAttributes(attributes: Record<string, unknown>, attachments: Record<string, unknown> | null): {
281
+ attributes: Record<string, unknown>;
282
+ attachments: Record<string, unknown> | null;
283
+ };
284
+ /**
285
+ * Queues attachment payloads on a model after validating permits and attachment definitions.
286
+ * @param {import("../database/record/index.js").default} model - Model receiving attachments.
287
+ * @param {Record<string, ?> | null} attachments - Attachments keyed by attachment name.
288
+ * @param {string[]} permittedAttributeNames - Attribute/attachment names permitted by the resource.
289
+ * @returns {void}
290
+ */
291
+ _assignAttachments(model: import("../database/record/index.js").default, attachments: Record<string, unknown> | null, permittedAttributeNames: string[]): void;
262
292
  /**
263
293
  * Sets a translated attribute on a model via the translations relationship.
264
294
  * @param {import("../database/record/index.js").default} model - Model instance.
@@ -280,6 +310,80 @@ export default class FrontendModelBaseResource<TModelClass extends typeof import
280
310
  * @returns {Promise<Record<string, ?>>} - Serialized model payload.
281
311
  */
282
312
  serialize(model: import("../database/record/index.js").default, action?: "index" | "find" | "create" | "update"): Promise<Record<string, unknown>>;
313
+ /**
314
+ * Resolves common metadata for one nested-attributes relationship.
315
+ * @param {object} args - Nested relationship inputs.
316
+ * @param {import("../database/record/index.js").default} args.parent - Parent model instance.
317
+ * @param {string} args.relationshipName - Relationship receiving nested attributes.
318
+ * @param {?} args.rawEntries - Raw nested entries from the request payload.
319
+ * @param {{attributes: string[], nested: Record<string, ?>}} args.childPermit - Parsed child permit.
320
+ * @param {?} args.controller - Controller instance for child resource lookup.
321
+ * @returns {{ability: import("../authorization/ability.js").default | undefined, childResource: FrontendModelBaseResource, childResourceConfig: FrontendModelResolvedResourceConfiguration, childWritableAttributes: string[], destroyPermitted: boolean, entries: Array<Record<string, ?>>, relationship: import("../database/record/relationships/base.js").default, targetModelClass: typeof import("../database/record/index.js").default}} Nested relationship context.
322
+ */
323
+ _nestedRelationshipContext({ parent, relationshipName, rawEntries, childPermit, controller }: {
324
+ parent: import("../database/record/index.js").default;
325
+ relationshipName: string;
326
+ rawEntries: unknown;
327
+ childPermit: {
328
+ attributes: string[];
329
+ nested: Record<string, unknown>;
330
+ };
331
+ controller: unknown;
332
+ }): {
333
+ ability: import("../authorization/ability.js").default | undefined;
334
+ childResource: FrontendModelBaseResource;
335
+ childResourceConfig: FrontendModelResolvedResourceConfiguration;
336
+ childWritableAttributes: string[];
337
+ destroyPermitted: boolean;
338
+ entries: Array<Record<string, unknown>>;
339
+ relationship: import("../database/record/relationships/base.js").default;
340
+ targetModelClass: typeof import("../database/record/index.js").default;
341
+ };
342
+ /**
343
+ * Normalizes nested entries for collection and singular relationships.
344
+ * @param {object} args - Nested entries inputs.
345
+ * @param {?} args.rawEntries - Raw nested entries value.
346
+ * @param {string} args.relationshipName - Relationship name.
347
+ * @param {string} args.relationshipType - Relationship type.
348
+ * @returns {Array<Record<string, ?>>} Normalized nested entry objects.
349
+ */
350
+ _nestedRelationshipEntries({ rawEntries, relationshipName, relationshipType }: {
351
+ rawEntries: unknown;
352
+ relationshipName: string;
353
+ relationshipType: string;
354
+ }): Array<Record<string, unknown>>;
355
+ /**
356
+ * Normalizes one nested entry from either internal transport shape
357
+ * (`{attributes, attachments, nestedAttributes}`) or direct Rails-style
358
+ * fields (`{name, file, commentsAttributes}`).
359
+ * @param {object} args - Normalization inputs.
360
+ * @param {{attributes: string[], nested: Record<string, ?>}} args.childPermit - Parsed child permit spec.
361
+ * @param {Record<string, ?>} args.entry - Raw nested entry.
362
+ * @param {string} args.relationshipName - Relationship name for error messages.
363
+ * @param {typeof import("../database/record/index.js").default} args.targetModelClass - Child model class.
364
+ * @returns {Record<string, ?>} Normalized nested entry.
365
+ */
366
+ _normalizeNestedRelationshipEntry({ childPermit, entry, relationshipName, targetModelClass }: {
367
+ childPermit: {
368
+ attributes: string[];
369
+ nested: Record<string, unknown>;
370
+ };
371
+ entry: Record<string, unknown>;
372
+ relationshipName: string;
373
+ targetModelClass: typeof import("../database/record/index.js").default;
374
+ }): Record<string, unknown>;
375
+ /**
376
+ * Applies belongs-to nested attributes before the parent save so the parent FK can be set.
377
+ * @param {import("../database/record/index.js").default} parent - Parent model instance.
378
+ * @param {Record<string, ?>} nestedAttributes - Nested-attribute payload keyed by relationship name.
379
+ * @param {?} controller - Controller instance for resource resolution and authorization.
380
+ * @param {{attributes: string[], nested: Record<string, ?>} | null} [parentPermit] - Parsed parent permit spec.
381
+ * @returns {Promise<void>}
382
+ */
383
+ _applyBelongsToNestedAttributes(parent: import("../database/record/index.js").default, nestedAttributes: Record<string, unknown>, controller: unknown, parentPermit?: {
384
+ attributes: string[];
385
+ nested: Record<string, unknown>;
386
+ } | null): Promise<void>;
283
387
  /**
284
388
  * Applies a `nestedAttributes` payload to a freshly-saved parent model,
285
389
  * cascading create/update/destroy writes across the declared relationships.
@@ -302,16 +406,75 @@ export default class FrontendModelBaseResource<TModelClass extends typeof import
302
406
  attributes: string[];
303
407
  nested: Record<string, unknown>;
304
408
  } | null): Promise<void>;
409
+ /**
410
+ * Assigns one nested entry's attributes and attachments to a child model.
411
+ * @param {object} args - Assignment inputs.
412
+ * @param {import("../database/record/index.js").default} args.child - Child model receiving data.
413
+ * @param {string[]} args.childWritableAttributes - Permitted child attribute and attachment names.
414
+ * @param {Record<string, ?>} args.entry - Nested entry payload.
415
+ * @returns {Promise<void>}
416
+ */
417
+ _assignNestedEntryToChild({ child, childWritableAttributes, entry }: {
418
+ child: import("../database/record/index.js").default;
419
+ childWritableAttributes: string[];
420
+ entry: Record<string, unknown>;
421
+ }): Promise<void>;
422
+ /**
423
+ * Converts a relationship's foreign-key column/name to the target model's attribute name.
424
+ * @param {import("../database/record/relationships/base.js").default} relationship - Relationship metadata.
425
+ * @param {typeof import("../database/record/index.js").default} modelClass - Model class containing the FK.
426
+ * @returns {string} Foreign-key attribute name.
427
+ */
428
+ _foreignKeyAttributeForModel(relationship: import("../database/record/relationships/base.js").default, modelClass: typeof import("../database/record/index.js").default): string;
429
+ /**
430
+ * Returns the FK attributes that bind a nested child to its parent.
431
+ * @param {object} args - Parent-link inputs.
432
+ * @param {import("../database/record/index.js").default} args.parent - Parent model instance.
433
+ * @param {import("../database/record/relationships/base.js").default} args.relationship - Relationship metadata.
434
+ * @param {typeof import("../database/record/index.js").default} args.targetModelClass - Child model class.
435
+ * @returns {Record<string, string | number>} Attributes that scope the child to the parent.
436
+ */
437
+ _parentLinkAttributesForNestedChild({ parent, relationship, targetModelClass }: {
438
+ parent: import("../database/record/index.js").default;
439
+ relationship: import("../database/record/relationships/base.js").default;
440
+ targetModelClass: typeof import("../database/record/index.js").default;
441
+ }): Record<string, string | number>;
442
+ /**
443
+ * Converts a relationship's polymorphic type column/name to a child attribute name.
444
+ * @param {import("../database/record/relationships/base.js").default} relationship - Relationship metadata.
445
+ * @param {typeof import("../database/record/index.js").default} modelClass - Model class containing the type column.
446
+ * @returns {string} Polymorphic type attribute name.
447
+ */
448
+ _polymorphicTypeAttributeForModel(relationship: import("../database/record/relationships/base.js").default, modelClass: typeof import("../database/record/index.js").default): string;
449
+ /**
450
+ * Finds an authorized nested record by id without parent scoping.
451
+ * @param {object} args - Lookup inputs.
452
+ * @param {import("../authorization/ability.js").default | undefined} args.ability - Current ability.
453
+ * @param {"update" | "destroy"} args.action - Frontend action.
454
+ * @param {import("../configuration-types.js").NormalizedFrontendModelResourceConfiguration} args.childResourceConfiguration - Child resource configuration.
455
+ * @param {string | number} args.id - Child id from the payload.
456
+ * @param {string} args.relationshipName - Parent's relationship name for error messages.
457
+ * @param {typeof import("../database/record/index.js").default} args.targetModelClass - Child model class.
458
+ * @returns {Promise<import("../database/record/index.js").default>} Authorized child model.
459
+ */
460
+ _findNestedRecord({ ability, action, childResourceConfiguration, id, relationshipName, targetModelClass }: {
461
+ ability: import("../authorization/ability.js").default | undefined;
462
+ action: "update" | "destroy";
463
+ childResourceConfiguration: import("../configuration-types.js").NormalizedFrontendModelResourceConfiguration;
464
+ id: string | number;
465
+ relationshipName: string;
466
+ targetModelClass: typeof import("../database/record/index.js").default;
467
+ }): Promise<import("../database/record/index.js").default>;
305
468
  /**
306
469
  * Resolves the ability action for a child resource using the child's own
307
470
  * `abilities` mapping — never the parent controller's. This preserves
308
471
  * custom mappings like `{update: "manage"}` and catches unmapped actions
309
472
  * instead of silently defaulting to the raw action name.
310
- * @param {import("../configuration-types.js").FrontendModelResourceConfiguration} childResourceConfiguration - Child resource configuration.
473
+ * @param {import("../configuration-types.js").NormalizedFrontendModelResourceConfiguration} childResourceConfiguration - Child resource configuration.
311
474
  * @param {"create" | "update" | "destroy"} action - Frontend action.
312
475
  * @returns {string} - Ability action for the child resource.
313
476
  */
314
- _resolveChildAbilityAction(childResourceConfiguration: import("../configuration-types.js").FrontendModelResourceConfiguration, action: "create" | "update" | "destroy"): string;
477
+ _resolveChildAbilityAction(childResourceConfiguration: import("../configuration-types.js").NormalizedFrontendModelResourceConfiguration, action: "create" | "update" | "destroy"): string;
315
478
  /**
316
479
  * Finds an existing child for a nested update/destroy, scoped to the
317
480
  * child's own model class, the parent's foreign key, AND the child
@@ -321,21 +484,21 @@ export default class FrontendModelBaseResource<TModelClass extends typeof import
321
484
  * @param {object} args - Arguments.
322
485
  * @param {import("../authorization/ability.js").default | undefined} args.ability - Current ability.
323
486
  * @param {"update" | "destroy"} args.action - Frontend action.
324
- * @param {import("../configuration-types.js").FrontendModelResourceConfiguration} args.childResourceConfiguration - Child resource configuration.
325
- * @param {string} args.foreignKey - Foreign-key attribute on the child pointing to the parent.
487
+ * @param {import("../configuration-types.js").NormalizedFrontendModelResourceConfiguration} args.childResourceConfiguration - Child resource configuration.
326
488
  * @param {string | number} args.id - Child id from the payload.
327
489
  * @param {import("../database/record/index.js").default} args.parent - Parent model instance.
490
+ * @param {Record<string, string | number>} args.parentLinkAttributes - Attributes that scope the child to the parent.
328
491
  * @param {string} args.relationshipName - Parent's relationship name (for error messages).
329
492
  * @param {typeof import("../database/record/index.js").default} args.targetModelClass - Child model class.
330
493
  * @returns {Promise<import("../database/record/index.js").default>} - Authorized, parent-linked child model.
331
494
  */
332
- _findScopedChild({ ability, action, childResourceConfiguration, foreignKey, id, parent, relationshipName, targetModelClass }: {
495
+ _findScopedChild({ ability, action, childResourceConfiguration, id, parent, parentLinkAttributes, relationshipName, targetModelClass }: {
333
496
  ability: import("../authorization/ability.js").default | undefined;
334
497
  action: "update" | "destroy";
335
- childResourceConfiguration: import("../configuration-types.js").FrontendModelResourceConfiguration;
336
- foreignKey: string;
498
+ childResourceConfiguration: import("../configuration-types.js").NormalizedFrontendModelResourceConfiguration;
337
499
  id: string | number;
338
500
  parent: import("../database/record/index.js").default;
501
+ parentLinkAttributes: Record<string, string | number>;
339
502
  relationshipName: string;
340
503
  targetModelClass: typeof import("../database/record/index.js").default;
341
504
  }): Promise<import("../database/record/index.js").default>;
@@ -346,7 +509,7 @@ export default class FrontendModelBaseResource<TModelClass extends typeof import
346
509
  * @param {object} args - Arguments.
347
510
  * @param {import("../authorization/ability.js").default | undefined} args.ability - Current ability.
348
511
  * @param {import("../database/record/index.js").default} args.child - Child model instance just created.
349
- * @param {import("../configuration-types.js").FrontendModelResourceConfiguration} args.childResourceConfiguration - Child resource configuration.
512
+ * @param {import("../configuration-types.js").NormalizedFrontendModelResourceConfiguration} args.childResourceConfiguration - Child resource configuration.
350
513
  * @param {string} args.relationshipName - Parent's relationship name (for error messages).
351
514
  * @param {typeof import("../database/record/index.js").default} args.targetModelClass - Child model class.
352
515
  * @returns {Promise<void>}
@@ -354,19 +517,10 @@ export default class FrontendModelBaseResource<TModelClass extends typeof import
354
517
  _authorizeCreatedChild({ ability, child, childResourceConfiguration, relationshipName, targetModelClass }: {
355
518
  ability: import("../authorization/ability.js").default | undefined;
356
519
  child: import("../database/record/index.js").default;
357
- childResourceConfiguration: import("../configuration-types.js").FrontendModelResourceConfiguration;
520
+ childResourceConfiguration: import("../configuration-types.js").NormalizedFrontendModelResourceConfiguration;
358
521
  relationshipName: string;
359
522
  targetModelClass: typeof import("../database/record/index.js").default;
360
523
  }): Promise<void>;
361
- /**
362
- * Best-effort foreign-key inference for relationships that don't declare it.
363
- * @param {import("../database/record/index.js").default} parent - Parent model.
364
- * @param {{foreignKey?: string}} definition - Relationship definition.
365
- * @returns {string} - Foreign-key attribute name.
366
- */
367
- _inferForeignKey(parent: import("../database/record/index.js").default, definition: {
368
- foreignKey?: string;
369
- }): string;
370
524
  /**
371
525
  * After nested writes, preload every relationship declared in the
372
526
  * parent's permit so the post-save serialize step emits them and the
@@ -438,5 +592,26 @@ export type FrontendModelResourceAbilityArgs = {
438
592
  */
439
593
  resourceConfiguration?: import("../configuration-types.js").FrontendModelResourceConfiguration | import("../configuration-types.js").NormalizedFrontendModelResourceConfiguration | undefined;
440
594
  };
595
+ /**
596
+ * Resolved frontend-model resource registration.
597
+ */
598
+ export type FrontendModelResolvedResourceConfiguration = {
599
+ /**
600
+ * - Backend project owning the resource.
601
+ */
602
+ backendProject: import("../configuration-types.js").BackendProjectConfiguration;
603
+ /**
604
+ * - Frontend model name.
605
+ */
606
+ modelName: string;
607
+ /**
608
+ * - Resource class.
609
+ */
610
+ resourceClass: import("../configuration-types.js").FrontendModelResourceClassType;
611
+ /**
612
+ * - Normalized resource configuration.
613
+ */
614
+ resourceConfiguration: import("../configuration-types.js").NormalizedFrontendModelResourceConfiguration;
615
+ };
441
616
  import AuthorizationBaseResource from "../authorization/base-resource.js";
442
617
  //# sourceMappingURL=base-resource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-resource.d.ts","sourceRoot":"","sources":["../../../src/frontend-model-resource/base-resource.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-resource.d.ts","sourceRoot":"","sources":["../../../src/frontend-model-resource/base-resource.js"],"names":[],"mappings":"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"}