@prisma-next/family-sql 0.14.0-dev.61 → 0.14.0-dev.62

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,5 +1,5 @@
1
1
  import { r as SqlControlAdapter } from "./control-adapter-BeN8TDZ5.mjs";
2
- import { A as SqlPlannerSuccessResult, C as SqlMigrationRunnerSuccessValue, D as SqlPlannerConflictLocation, E as SqlPlannerConflictKind, O as SqlPlannerFailureResult, S as SqlMigrationRunnerResult, T as SqlPlannerConflict, _ as SqlMigrationRunner, a as FieldEvent, b as SqlMigrationRunnerExecuteOptions, c as SqlControlAdapterDescriptor, d as SqlMigrationPlanContractInfo, f as SqlMigrationPlanOperation, g as SqlMigrationPlannerPlanOptions, h as SqlMigrationPlanner, i as ExpandNativeTypeInput, j as StorageTypePlanResult, k as SqlPlannerResult, l as SqlControlExtensionDescriptor, m as SqlMigrationPlanOperationTarget, n as CodecControlHooks, o as FieldEventContext, p as SqlMigrationPlanOperationStep, r as CreateSqlMigrationPlanOptions, s as ResolveIdentityValueInput, t as AnyRecord, u as SqlMigrationPlan, v as SqlMigrationRunnerErrorCode, w as SqlPlanTargetDetails, x as SqlMigrationRunnerFailure, y as SqlMigrationRunnerExecuteCallbacks } from "./types-COTsneBU.mjs";
2
+ import { A as SqlPlannerSuccessResult, C as SqlMigrationRunnerSuccessValue, D as SqlPlannerConflictLocation, E as SqlPlannerConflictKind, O as SqlPlannerFailureResult, S as SqlMigrationRunnerResult, T as SqlPlannerConflict, _ as SqlMigrationRunner, a as FieldEvent, b as SqlMigrationRunnerExecuteOptions, c as SqlControlAdapterDescriptor, d as SqlMigrationPlanContractInfo, f as SqlMigrationPlanOperation, g as SqlMigrationPlannerPlanOptions, h as SqlMigrationPlanner, i as ExpandNativeTypeInput, j as StorageTypePlanResult, k as SqlPlannerResult, l as SqlControlExtensionDescriptor, m as SqlMigrationPlanOperationTarget, n as CodecControlHooks, o as FieldEventContext, p as SqlMigrationPlanOperationStep, r as CreateSqlMigrationPlanOptions, s as ResolveIdentityValueInput, t as AnyRecord, u as SqlMigrationPlan, v as SqlMigrationRunnerErrorCode, w as SqlPlanTargetDetails, x as SqlMigrationRunnerFailure, y as SqlMigrationRunnerExecuteCallbacks } from "./types-9DnjnhkE.mjs";
3
3
  import { n as SqlSchemaDiffInput, r as SqlSchemaDiffResult, t as SqlSchemaDiffFn } from "./schema-differ-DnoopSXm.mjs";
4
4
  import { ContractSerializer, ControlFamilyDescriptor, ControlFamilyInstance, ControlStack, DiffSubjectGranularity, MigratableTargetDescriptor, MigrationOperationClass, MigrationOperationPolicy, MigrationOperationPolicy as MigrationOperationPolicy$1, MigrationPlan, MigrationPlanOperation, MigrationPlanOperation as MigrationPlanOperation$1, MigrationPlanner, MigrationPlannerConflict, MigrationPlannerConflict as MigrationPlannerConflict$1, MigrationPlannerResult, MutationDefaultGeneratorDescriptor, OpFactoryCall, OperationPreview, OperationPreviewCapable, PslContractInferCapable, SchemaDiffIssue, SchemaVerifier, SchemaViewCapable, SignDatabaseResult, TargetMigrationsCapability, VerifyDatabaseResult, VerifyDatabaseSchemaResult, assembleAuthoringContributions } from "@prisma-next/framework-components/control";
5
5
  import { ColumnDefault, Contract, ControlPolicy } from "@prisma-next/contract/types";
@@ -566,13 +566,19 @@ declare function contractToSchemaIR(contract: Contract<SqlStorage> | null, optio
566
566
  * resolved from the target's own IR. `undefined` means the call's target
567
567
  * object could not be positively established — a fail-closed signal: any
568
568
  * policy stricter than `managed` drops such a call rather than emitting it.
569
+ *
570
+ * The object identity is a generic storage coordinate — `(entityKind,
571
+ * entityName)`, absent for a whole-namespace subject — never a target-specific
572
+ * `table`/`typeName` field. The family reasons about the coordinate for policy
573
+ * and deduplication; the target owns any vocabulary (table vs enum) when it
574
+ * renders a suppression.
569
575
  */
570
576
  interface ControlPolicySubject {
571
577
  readonly namespaceId: string;
572
- readonly explicitNodeControlPolicy?: ControlPolicy;
573
- readonly table?: string;
578
+ readonly entityKind?: string;
579
+ readonly entityName?: string;
574
580
  readonly column?: string;
575
- readonly typeName?: string;
581
+ readonly explicitNodeControlPolicy?: ControlPolicy;
576
582
  /**
577
583
  * Whether the call creates a whole, previously-absent top-level storage
578
584
  * object (e.g. a table or an enum/type), as opposed to modifying an
@@ -582,6 +588,25 @@ interface ControlPolicySubject {
582
588
  */
583
589
  readonly createsNewObject: boolean;
584
590
  }
591
+ /**
592
+ * The structured record a control-policy partition emits for one suppressed
593
+ * subject or call. It carries only raw data — no strings, no vocabulary — so
594
+ * the consumer (the target) renders the user-facing message itself:
595
+ *
596
+ * - `subject` — the suppressed subject (its coordinate + namespace), or
597
+ * `undefined` when the subject could not be resolved (fail-closed).
598
+ * - `policy` — the effective control policy that caused the suppression.
599
+ * - `factoryName` — the resolved creation factory name if the suppressed thing
600
+ * was a whole-object creation (e.g. `createTable`), else `undefined`. The
601
+ * family never invents a verb for a modification that produced no call.
602
+ * - `createsNewObject` — whether the suppressed thing was object creation.
603
+ */
604
+ interface SuppressionRecord {
605
+ readonly subject: ControlPolicySubject | undefined;
606
+ readonly policy: ControlPolicy;
607
+ readonly factoryName: string | undefined;
608
+ readonly createsNewObject: boolean;
609
+ }
585
610
  /**
586
611
  * The control policy that governs a single call. The `external` default is an
587
612
  * un-overridable namespace floor: when the contract default is `external`, no
@@ -593,7 +618,7 @@ declare function controlPolicyForCall(subject: ControlPolicySubject | undefined,
593
618
  /**
594
619
  * Partition the calls produced for a single set of subjects into those the
595
620
  * effective control policy permits (`kept`) and a list of
596
- * {@link SqlPlannerConflict} warnings describing the suppressed calls.
621
+ * {@link SuppressionRecord}s describing the suppressed calls.
597
622
  *
598
623
  * **Prefer {@link partitionIssuesByControlPolicy}** for the schema-issue
599
624
  * pipeline: it filters subjects out of the planner's *input* so the planner
@@ -608,10 +633,9 @@ declare function partitionCallsByControlPolicy<TCall>(options: {
608
633
  readonly contract: Contract<SqlStorage>;
609
634
  readonly resolveControlPolicySubject: (call: TCall) => ControlPolicySubject | undefined;
610
635
  readonly resolveFactoryName: (call: TCall) => string;
611
- readonly formatSubjectLabel?: (factoryName: string, subject: ControlPolicySubject | undefined) => string;
612
636
  }): {
613
637
  readonly kept: readonly TCall[];
614
- readonly warnings: readonly SqlPlannerConflict[];
638
+ readonly suppressions: readonly SuppressionRecord[];
615
639
  };
616
640
  /**
617
641
  * Partition a list of schema-issue-shaped inputs by the effective control
@@ -627,18 +651,15 @@ declare function partitionCallsByControlPolicy<TCall>(options: {
627
651
  * cannot reason about the live shape of a subject the user marked as
628
652
  * out-of-scope (`external`).
629
653
  *
630
- * `warnings` is one {@link SqlPlannerConflict} per suppressed subject (not per
631
- * suppressed issue). `factoryName` is inferred from the subject's issue mix:
632
- * if any of the subject's issues is whole-object creation, the warning takes
633
- * the corresponding creation factoryName (e.g. `createTable`,
634
- * `createEnumType`, `createSchema`); otherwise it falls back to
635
- * `defaultModificationFactoryName(subject)` — a synthetic label that names
636
- * the *kind* of mutation that would have run, since no concrete DDL call was
637
- * generated.
654
+ * `suppressions` is one {@link SuppressionRecord} per suppressed subject (not
655
+ * per suppressed issue). Its `factoryName` is the creation factory name when any
656
+ * of the subject's issues is whole-object creation (e.g. `createTable`), else
657
+ * `undefined` — the family never invents a modification verb for an op that
658
+ * produced no call; the target renders the message.
638
659
  *
639
660
  * Unresolved-subject issues (`resolveControlPolicySubject` returns
640
- * `undefined`) emit one warning each; they cannot be deduplicated because
641
- * they carry no subject coordinate.
661
+ * `undefined`) emit one record each; they cannot be deduplicated because they
662
+ * carry no subject coordinate.
642
663
  */
643
664
  declare function partitionIssuesByControlPolicy<TIssue>(options: {
644
665
  readonly issues: readonly TIssue[];
@@ -656,22 +677,13 @@ declare function partitionIssuesByControlPolicy<TIssue>(options: {
656
677
  *
657
678
  * 1. Under `tolerated`, only issues whose `resolveCreationFactoryName`
658
679
  * returns a value flow into the planner (create-if-absent).
659
- * 2. Subjects that have at least one creation-flavoured issue use the
660
- * resolved creation factoryName for their suppression warning;
661
- * otherwise they fall back to `defaultModificationFactoryName`.
680
+ * 2. A suppressed subject's record carries the resolved creation factoryName
681
+ * when it has at least one creation-flavoured issue, else `undefined`.
662
682
  */
663
683
  readonly resolveCreationFactoryName: (issue: TIssue) => string | undefined;
664
- /**
665
- * Default modification factoryName for a suppressed subject whose issues
666
- * are all non-creation (the subject exists but has a different shape).
667
- * Defaults to `'alterTable'` / `'alterType'` / `'alterSchema'` based on the
668
- * subject's populated coordinates.
669
- */
670
- readonly defaultModificationFactoryName?: (subject: ControlPolicySubject) => string;
671
- readonly formatSubjectLabel?: (factoryName: string, subject: ControlPolicySubject | undefined) => string;
672
684
  }): {
673
685
  readonly plannable: readonly TIssue[];
674
- readonly warnings: readonly SqlPlannerConflict[];
686
+ readonly suppressions: readonly SuppressionRecord[];
675
687
  };
676
688
  //#endregion
677
689
  //#region src/core/migrations/field-event-planner.d.ts
@@ -796,5 +808,5 @@ declare function temporalAuthoringPresets<const CodecId extends string, const Na
796
808
  //#region src/exports/control.d.ts
797
809
  declare const _default: SqlFamilyDescriptor;
798
810
  //#endregion
799
- export { type CodecControlHooks, type ContractToSchemaIROptions, type ControlPolicySubject, type CreateSqlMigrationPlanOptions, type DefaultRenderer, type EnumNamespaceSchemaResolver, type ExpandNativeTypeInput, type FieldEvent, type FieldEventContext, INIT_ADDITIVE_POLICY, type MigrationOperationClass, type MigrationOperationPolicy, type MigrationPlan, type MigrationPlanOperation, type MigrationPlanner, type MigrationPlannerConflict, type MigrationPlannerResult, type NativeTypeExpander, type PlanFieldEventOperationsOptions, type ResolveIdentityValueInput, type SqlControlAdapterDescriptor, type SqlControlExtensionDescriptor, type SqlControlFamilyInstance, type SqlControlTargetDescriptor, type SqlDescribedContractSpace, type SqlMigrationPlan, type SqlMigrationPlanContractInfo, type SqlMigrationPlanOperation, type SqlMigrationPlanOperationStep, type SqlMigrationPlanOperationTarget, type SqlMigrationPlanner, type SqlMigrationPlannerPlanOptions, type SqlMigrationRunner, type SqlMigrationRunnerErrorCode, type SqlMigrationRunnerExecuteCallbacks, type SqlMigrationRunnerExecuteOptions, type SqlMigrationRunnerFailure, type SqlMigrationRunnerResult, type SqlMigrationRunnerSuccessValue, type SqlPlanTargetDetails, type SqlPlannerConflict, type SqlPlannerConflictKind, type SqlPlannerConflictLocation, type SqlPlannerFailureResult, type SqlPlannerResult, type SqlPlannerSuccessResult, type SqlSchemaDiffFn, type SqlSchemaDiffInput, type SqlSchemaDiffResult, type StorageTypePlanResult, type TargetMigrationsCapability, assembleAuthoringContributions, buildNativeTypeExpander, contractNamespaceToSchemaIR, contractToSchemaIR, controlPolicyForCall, createMigrationPlan, _default as default, detectDestructiveChanges, extractCodecControlHooks, partitionCallsByControlPolicy, partitionIssuesByControlPolicy, planFieldEventOperations, plannerFailure, plannerSuccess, resolveValueSetValues, runnerFailure, runnerSuccess, temporalAuthoringPresets, timestampNowControlDescriptor };
811
+ export { type CodecControlHooks, type ContractToSchemaIROptions, type ControlPolicySubject, type CreateSqlMigrationPlanOptions, type DefaultRenderer, type EnumNamespaceSchemaResolver, type ExpandNativeTypeInput, type FieldEvent, type FieldEventContext, INIT_ADDITIVE_POLICY, type MigrationOperationClass, type MigrationOperationPolicy, type MigrationPlan, type MigrationPlanOperation, type MigrationPlanner, type MigrationPlannerConflict, type MigrationPlannerResult, type NativeTypeExpander, type PlanFieldEventOperationsOptions, type ResolveIdentityValueInput, type SqlControlAdapterDescriptor, type SqlControlExtensionDescriptor, type SqlControlFamilyInstance, type SqlControlTargetDescriptor, type SqlDescribedContractSpace, type SqlMigrationPlan, type SqlMigrationPlanContractInfo, type SqlMigrationPlanOperation, type SqlMigrationPlanOperationStep, type SqlMigrationPlanOperationTarget, type SqlMigrationPlanner, type SqlMigrationPlannerPlanOptions, type SqlMigrationRunner, type SqlMigrationRunnerErrorCode, type SqlMigrationRunnerExecuteCallbacks, type SqlMigrationRunnerExecuteOptions, type SqlMigrationRunnerFailure, type SqlMigrationRunnerResult, type SqlMigrationRunnerSuccessValue, type SqlPlanTargetDetails, type SqlPlannerConflict, type SqlPlannerConflictKind, type SqlPlannerConflictLocation, type SqlPlannerFailureResult, type SqlPlannerResult, type SqlPlannerSuccessResult, type SqlSchemaDiffFn, type SqlSchemaDiffInput, type SqlSchemaDiffResult, type StorageTypePlanResult, type SuppressionRecord, type TargetMigrationsCapability, assembleAuthoringContributions, buildNativeTypeExpander, contractNamespaceToSchemaIR, contractToSchemaIR, controlPolicyForCall, createMigrationPlan, _default as default, detectDestructiveChanges, extractCodecControlHooks, partitionCallsByControlPolicy, partitionIssuesByControlPolicy, planFieldEventOperations, plannerFailure, plannerSuccess, resolveValueSetValues, runnerFailure, runnerSuccess, temporalAuthoringPresets, timestampNowControlDescriptor };
800
812
  //# sourceMappingURL=control.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"control.d.mts","names":[],"sources":["../src/core/control-instance.ts","../src/core/control-descriptor.ts","../src/core/assembly.ts","../src/core/control-target-descriptor.ts","../src/core/migrations/contract-to-schema-ir.ts","../src/core/migrations/control-policy.ts","../src/core/migrations/field-event-planner.ts","../src/core/migrations/native-type-expander.ts","../src/core/migrations/plan-helpers.ts","../src/core/migrations/policies.ts","../src/core/timestamp-now-generator.ts","../src/exports/control.ts"],"mappings":";;;;;;;;;;;;;;;UAwLU,eAAA;EAAA,SACC,MAAA;EAAA,SACA,QAAA;EAAA,SACA,QAAA;EAAA,SACA,UAAA;AAAA;AAAA,KAGN,uBAAA,GAA0B,GAAG,SAAS,eAAA;AAAA,UAEjC,sBAAA;EAAA,SACC,gBAAA,EAAkB,aAAA,CAAc,eAAA;EAAA,SAChC,YAAA,EAAc,aAAA;EAAA,SACd,oBAAA,EAAsB,uBAAA;AAAA;AAAA,UAGhB,wBAAA,SACP,qBAAA,QAA6B,eAAA,GACnC,iBAAA,CAAkB,eAAA,GAClB,uBAAA,CAAwB,eAAA,GACxB,uBAAA,EACA,sBAAA;EAjBO;;;AACU;AAAA;;;;EAyBnB,mBAAA,CAAoB,YAAA,YAAwB,QAAA;EAE5C,MAAA,CAAO,OAAA;IAAA,SACI,MAAA,EAAQ,wBAAA;IAAA,SACR,QAAA;IAAA,SACA,gBAAA;IAAA,SACA,YAAA;IAAA,SACA,UAAA;EAAA,IACP,OAAA,CAAQ,oBAAA;EAzB0C;;;;;;;;;EAoCtD,YAAA,CAAa,OAAA;IAAA,SACF,QAAA;IAAA,SACA,MAAA,EAAQ,eAAA;IAAA,SACR,MAAA;IAAA,SACA,mBAAA,EAAqB,aAAA,CAAc,8BAAA;EAAA,IAC1C,0BAAA;EApCgB;;;;;;;;;EA+CpB,0BAAA,CAA2B,KAAA,EAAO,eAAA,GAAkB,sBAAA;EAAlB;;;;;;;EASlC,kBAAA,CAAmB,KAAA,EAAO,eAAA;EAE1B,IAAA,CAAK,OAAA;IAAA,SACM,MAAA,EAAQ,wBAAA;IAAA,SACR,QAAA;IAAA,SACA,YAAA;IAAA,SACA,UAAA;EAAA,IACP,OAAA,CAAQ,kBAAA;EAEZ,UAAA,CAAW,OAAA;IAAA,SACA,MAAA,EAAQ,wBAAA;IAAA,SACR,QAAA;EAAA,IACP,OAAA,CAAQ,eAAA;EAEZ,gBAAA,CAAiB,QAAA,EAAU,eAAA,GAAkB,cAAA;EAE7C,QAAA,CACE,GAAA,EAAK,WAAA,GAAc,OAAA,EACnB,OAAA,EAAS,cAAA,YACR,OAAA,CAAQ,iBAAA;EAqCQ;;;;;EA9BnB,UAAA,CAAW,OAAA;IAAA,SACA,MAAA,EAAQ,wBAAA;IAAA,SACR,KAAA;IAAA,SACA,WAAA;MAAA,SACE,WAAA;MAAA,SACA,WAAA;MAAA,SACA,UAAA;IAAA;EAAA,IAET,OAAA;EA1FF;;;;EAgGF,YAAA,CAAa,OAAA;IAAA,SACF,MAAA,EAAQ,wBAAA;IAAA,SACR,KAAA;IAAA,SACA,YAAA;IAAA,SACA,WAAA;MAAA,SACE,WAAA;MAAA,SACA,WAAA;MAAA,SACA,UAAA;IAAA;EAAA,IAET,OAAA;EAvFO;;;;EA6FX,gBAAA,CAAiB,OAAA;IAAA,SACN,MAAA,EAAQ,wBAAA;IAAA,SACR,KAAA;IAAA,SACA,KAAA;MAAA,SACE,MAAA;MAAA,SACA,IAAA;MAAA,SACA,EAAA;MAAA,SACA,aAAA;MAAA,SACA,aAAA;MAAA,SACA,UAAA;IAAA;EAAA,IAET,OAAA;EAEJ,4BAAA,aAAyC,OAAA;EAEzC,kBAAA,CAAmB,UAAA,WAAqB,wBAAA,KAA2B,gBAAA;AAAA;;;cC5TxD,mBAAA,YACA,uBAAA,QAA+B,wBAAA;EAAA,SAEjC,IAAA;EAAA,SACA,EAAA;EAAA,SACA,QAAA;EAAA,SACA,OAAA;EAAA,SACA,QAAA,EAAU,WAAA;EAAA,SACV,SAAA;IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOT,MAAA,2BACE,KAAA,EAAO,YAAA,QAAoB,SAAA,IAC1B,wBAAA;AAAA;;;iBCNW,wBAAA,CACd,WAAA,EAAa,aAAA,CAAc,8BAAA,mBAC1B,GAAA,SAAY,iBAAA;;;;;;;;AFoBqE;;;;;UGlBnE,yBAAA;EAAA,SACN,OAAA;EAAA,SACA,QAAA,EAAU,QAAQ,CAAC,UAAA;AAAA;AAAA,UAGb,0BAAA,6DAGG,QAAA,CAAS,UAAA,IAAc,QAAA,CAAS,UAAA,WAC1C,0BAAA,QAAkC,SAAA,EAAW,wBAAA;EAAA,SAC5C,eAAA,SAAwB,uBAAA;EH2JP;;;AAA8B;AAAA;;EAA9B,SGpJjB,kBAAA,EAAoB,kBAAA,CAAmB,SAAA;EHuJP;;;;;;EAAA,SGhJhC,cAAA,EAAgB,cAAA,CAAe,SAAA,EAAW,WAAA;EHgJxB;;;;;;;AAE2B;AAGxD;EAL6B,SGtIlB,gBAAA,IACP,MAAA,EAAQ,eAAA,EACR,kBAAA,YAA8B,yBAAA,OAC3B,cAAA;;;;;;;;WAQI,UAAA,EAAY,eAAA;EHmKF;;;;;;;;;;EAAA,SGxJV,0BAAA,GAA6B,QAAA,aAAqB,sBAAA;EH2L/C;;;;;;;;;;;EAAA,SG/KH,kBAAA,GAAqB,QAAA;EAC9B,aAAA,CAAc,OAAA,EAAS,iBAAA,CAAkB,SAAA,IAAa,mBAAA,CAAoB,cAAA;EAC1E,YAAA,CAAa,MAAA,EAAQ,wBAAA,GAA2B,kBAAA,CAAmB,cAAA;AAAA;;;;;;;;;;;;;KC1DzD,kBAAA,IAAsB,KAAA;EAAA,SACvB,UAAA;EAAA,SACA,OAAA;EAAA,SACA,UAAA,GAAa,MAAM;AAAA;;;;;;AJmJT;AAAA;;;KIvIT,eAAA,IAAmB,GAAA,EAAK,aAAA,EAAe,MAAA,EAAQ,aAAa;AJ0Id;AAAA;;;;;;;;;;;;AAAA,KI3H9C,2BAAA,IAA+B,OAAA,EAAS,UAAU,EAAE,WAAA;AAAA,iBAmHhD,qBAAA,CACd,GAAA;EAAA,SAAgB,WAAA;EAAA,SAA8B,UAAA;AAAA,GAC9C,OAAA,EAAS,UAAU,EACnB,YAAA;AJUsD;AAGxD;;;;;;;;AAHwD,iBIiJxC,wBAAA,CACd,IAAA,EAAM,UAAA,SACN,EAAA,EAAI,UAAA,YACM,0BAAA;AAAA,UA8CK,yBAAA;EAAA,SACN,mBAAA;EAAA,SACA,gBAAA,GAAmB,kBAAA;EAAA,SACnB,aAAA,GAAgB,eAAA;EJ5JrB;;;;;;;EAAA,SIoKK,0BAAA,GAA6B,2BAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+BxB,2BAAA,CACd,OAAA,EAAS,UAAA,EACT,WAAA,UACA,OAAA,EAAS,yBAAA,GACR,WAAA;AAAA,iBAwBa,kBAAA,CACd,QAAA,EAAU,QAAA,CAAS,UAAA,UACnB,OAAA,EAAS,yBAAA,GACR,WAAA;;;;;;;;;UChcc,oBAAA;EAAA,SACN,WAAA;EAAA,SACA,yBAAA,GAA4B,aAAa;EAAA,SACzC,KAAA;EAAA,SACA,MAAA;EAAA,SACA,QAAA;ELoKD;;;;;;;EAAA,SK5JC,gBAAA;AAAA;ALgKU;AAAA;;;;AAGqC;AAAA;AAHrC,iBKtJL,oBAAA,CACd,OAAA,EAAS,oBAAA,cACT,oBAAA,EAAsB,aAAA,eACrB,aAAA;;;;;;;;;;;;;;iBAsGa,6BAAA,QAAqC,OAAA;EAAA,SAC1C,KAAA,WAAgB,KAAA;EAAA,SAChB,QAAA,EAAU,QAAA,CAAS,UAAA;EAAA,SACnB,2BAAA,GAA8B,IAAA,EAAM,KAAA,KAAU,oBAAA;EAAA,SAC9C,kBAAA,GAAqB,IAAA,EAAM,KAAA;EAAA,SAC3B,kBAAA,IACP,WAAA,UACA,OAAA,EAAS,oBAAA;AAAA;EAAA,SAGF,IAAA,WAAe,KAAA;EAAA,SACf,QAAA,WAAmB,kBAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqDd,8BAAA,SAAuC,OAAA;EAAA,SAC5C,MAAA,WAAiB,MAAA;EAAA,SACjB,QAAA,EAAU,QAAA,CAAS,UAAA;ELsHY;;;;EAAA,SKjH/B,2BAAA,GAA8B,KAAA,EAAO,MAAA,KAAW,oBAAA;ELXvD;;;;;;;;;;;;EAAA,SKwBO,0BAAA,GAA6B,KAAA,EAAO,MAAA;ELdzB;;;;;;EAAA,SKqBX,8BAAA,IAAkC,OAAA,EAAS,oBAAA;EAAA,SAC3C,kBAAA,IACP,WAAA,UACA,OAAA,EAAS,oBAAA;AAAA;EAAA,SAGF,SAAA,WAAoB,MAAA;EAAA,SACpB,QAAA,WAAmB,kBAAA;AAAA;;;UCpNb,+BAAA;ENkKc;AAA2B;AAAA;;EAA3B,SM7JpB,aAAA,EAAe,QAAA,CAAS,UAAA;ENgKQ;;;EAAA,SM5JhC,WAAA,EAAa,QAAA,CAAS,UAAA;EN8JuB;;;;;;;;;EAAA,SMpJ7C,UAAA,EAAY,WAAA,SAAoB,iBAAA;AAAA;AAAA,iBAa3B,wBAAA,CACd,OAAA,EAAS,+BAAA,YACC,aAAa;;;;;;;;;iBCtDT,uBAAA,CACd,mBAAA,GAAsB,aAAA,CAAc,8BAAA,qBAA8C,KAAA;EAAA,SAOvE,UAAA;EAAA,SACA,OAAA;EAAA,SACA,UAAA,GAAa,MAAA;AAAA;;;iBC4EV,mBAAA,iBACd,OAAA,EAAS,6BAAA,CAA8B,cAAA,IACtC,gBAAA,CAAiB,cAAA;AAAA,iBAcJ,cAAA,iBACd,IAAA,EAAM,gBAAA,CAAiB,cAAA,GACvB,QAAA,YAAoB,kBAAA,KACnB,uBAAA,CAAwB,cAAA;AAAA,iBAsBX,cAAA,CAAe,SAAA,WAAoB,kBAAA,KAAuB,uBAAuB;;;;iBAoBjF,aAAA,CAAc,KAAA;EAC5B,iBAAA;EACA,kBAAA;AAAA,IACE,EAAE,CAAC,8BAAA;;;;iBAYS,aAAA,CACd,IAAA,EAAM,2BAAA,EACN,OAAA,UACA,OAAA;EAAY,GAAA;EAAc,IAAA,GAAO,SAAA;AAAA,IAChC,KAAA,CAAM,yBAAA;;;;;;cC1KI,oBAAA,EAAsB,0BAEjC;;;;;ATqCkF;;;;;;;;;iBUjBpE,6BAAA,IAAiC,kCAAkC;AViK9D;;;;AAGqC;AAAA;;;;;AAHrC,iBU5IL,wBAAA,gEAGd,KAAA;EAAA,SAAkB,OAAA,EAAS,OAAA;EAAA,SAAkB,UAAA,EAAY,UAAA;AAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCuClB,QAAA"}
1
+ {"version":3,"file":"control.d.mts","names":[],"sources":["../src/core/control-instance.ts","../src/core/control-descriptor.ts","../src/core/assembly.ts","../src/core/control-target-descriptor.ts","../src/core/migrations/contract-to-schema-ir.ts","../src/core/migrations/control-policy.ts","../src/core/migrations/field-event-planner.ts","../src/core/migrations/native-type-expander.ts","../src/core/migrations/plan-helpers.ts","../src/core/migrations/policies.ts","../src/core/timestamp-now-generator.ts","../src/exports/control.ts"],"mappings":";;;;;;;;;;;;;;;UAwLU,eAAA;EAAA,SACC,MAAA;EAAA,SACA,QAAA;EAAA,SACA,QAAA;EAAA,SACA,UAAA;AAAA;AAAA,KAGN,uBAAA,GAA0B,GAAG,SAAS,eAAA;AAAA,UAEjC,sBAAA;EAAA,SACC,gBAAA,EAAkB,aAAA,CAAc,eAAA;EAAA,SAChC,YAAA,EAAc,aAAA;EAAA,SACd,oBAAA,EAAsB,uBAAA;AAAA;AAAA,UAGhB,wBAAA,SACP,qBAAA,QAA6B,eAAA,GACnC,iBAAA,CAAkB,eAAA,GAClB,uBAAA,CAAwB,eAAA,GACxB,uBAAA,EACA,sBAAA;EAjBO;;;AACU;AAAA;;;;EAyBnB,mBAAA,CAAoB,YAAA,YAAwB,QAAA;EAE5C,MAAA,CAAO,OAAA;IAAA,SACI,MAAA,EAAQ,wBAAA;IAAA,SACR,QAAA;IAAA,SACA,gBAAA;IAAA,SACA,YAAA;IAAA,SACA,UAAA;EAAA,IACP,OAAA,CAAQ,oBAAA;EAzB0C;;;;;;;;;EAoCtD,YAAA,CAAa,OAAA;IAAA,SACF,QAAA;IAAA,SACA,MAAA,EAAQ,eAAA;IAAA,SACR,MAAA;IAAA,SACA,mBAAA,EAAqB,aAAA,CAAc,8BAAA;EAAA,IAC1C,0BAAA;EApCgB;;;;;;;;;EA+CpB,0BAAA,CAA2B,KAAA,EAAO,eAAA,GAAkB,sBAAA;EAAlB;;;;;;;EASlC,kBAAA,CAAmB,KAAA,EAAO,eAAA;EAE1B,IAAA,CAAK,OAAA;IAAA,SACM,MAAA,EAAQ,wBAAA;IAAA,SACR,QAAA;IAAA,SACA,YAAA;IAAA,SACA,UAAA;EAAA,IACP,OAAA,CAAQ,kBAAA;EAEZ,UAAA,CAAW,OAAA;IAAA,SACA,MAAA,EAAQ,wBAAA;IAAA,SACR,QAAA;EAAA,IACP,OAAA,CAAQ,eAAA;EAEZ,gBAAA,CAAiB,QAAA,EAAU,eAAA,GAAkB,cAAA;EAE7C,QAAA,CACE,GAAA,EAAK,WAAA,GAAc,OAAA,EACnB,OAAA,EAAS,cAAA,YACR,OAAA,CAAQ,iBAAA;EAqCQ;;;;;EA9BnB,UAAA,CAAW,OAAA;IAAA,SACA,MAAA,EAAQ,wBAAA;IAAA,SACR,KAAA;IAAA,SACA,WAAA;MAAA,SACE,WAAA;MAAA,SACA,WAAA;MAAA,SACA,UAAA;IAAA;EAAA,IAET,OAAA;EA1FF;;;;EAgGF,YAAA,CAAa,OAAA;IAAA,SACF,MAAA,EAAQ,wBAAA;IAAA,SACR,KAAA;IAAA,SACA,YAAA;IAAA,SACA,WAAA;MAAA,SACE,WAAA;MAAA,SACA,WAAA;MAAA,SACA,UAAA;IAAA;EAAA,IAET,OAAA;EAvFO;;;;EA6FX,gBAAA,CAAiB,OAAA;IAAA,SACN,MAAA,EAAQ,wBAAA;IAAA,SACR,KAAA;IAAA,SACA,KAAA;MAAA,SACE,MAAA;MAAA,SACA,IAAA;MAAA,SACA,EAAA;MAAA,SACA,aAAA;MAAA,SACA,aAAA;MAAA,SACA,UAAA;IAAA;EAAA,IAET,OAAA;EAEJ,4BAAA,aAAyC,OAAA;EAEzC,kBAAA,CAAmB,UAAA,WAAqB,wBAAA,KAA2B,gBAAA;AAAA;;;cC5TxD,mBAAA,YACA,uBAAA,QAA+B,wBAAA;EAAA,SAEjC,IAAA;EAAA,SACA,EAAA;EAAA,SACA,QAAA;EAAA,SACA,OAAA;EAAA,SACA,QAAA,EAAU,WAAA;EAAA,SACV,SAAA;IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOT,MAAA,2BACE,KAAA,EAAO,YAAA,QAAoB,SAAA,IAC1B,wBAAA;AAAA;;;iBCNW,wBAAA,CACd,WAAA,EAAa,aAAA,CAAc,8BAAA,mBAC1B,GAAA,SAAY,iBAAA;;;;;;;;AFoBqE;;;;;UGlBnE,yBAAA;EAAA,SACN,OAAA;EAAA,SACA,QAAA,EAAU,QAAQ,CAAC,UAAA;AAAA;AAAA,UAGb,0BAAA,6DAGG,QAAA,CAAS,UAAA,IAAc,QAAA,CAAS,UAAA,WAC1C,0BAAA,QAAkC,SAAA,EAAW,wBAAA;EAAA,SAC5C,eAAA,SAAwB,uBAAA;EH2JP;;;AAA8B;AAAA;;EAA9B,SGpJjB,kBAAA,EAAoB,kBAAA,CAAmB,SAAA;EHuJP;;;;;;EAAA,SGhJhC,cAAA,EAAgB,cAAA,CAAe,SAAA,EAAW,WAAA;EHgJxB;;;;;;;AAE2B;AAGxD;EAL6B,SGtIlB,gBAAA,IACP,MAAA,EAAQ,eAAA,EACR,kBAAA,YAA8B,yBAAA,OAC3B,cAAA;;;;;;;;WAQI,UAAA,EAAY,eAAA;EHmKF;;;;;;;;;;EAAA,SGxJV,0BAAA,GAA6B,QAAA,aAAqB,sBAAA;EH2L/C;;;;;;;;;;;EAAA,SG/KH,kBAAA,GAAqB,QAAA;EAC9B,aAAA,CAAc,OAAA,EAAS,iBAAA,CAAkB,SAAA,IAAa,mBAAA,CAAoB,cAAA;EAC1E,YAAA,CAAa,MAAA,EAAQ,wBAAA,GAA2B,kBAAA,CAAmB,cAAA;AAAA;;;;;;;;;;;;;KC1DzD,kBAAA,IAAsB,KAAA;EAAA,SACvB,UAAA;EAAA,SACA,OAAA;EAAA,SACA,UAAA,GAAa,MAAM;AAAA;;;;;;AJmJT;AAAA;;;KIvIT,eAAA,IAAmB,GAAA,EAAK,aAAA,EAAe,MAAA,EAAQ,aAAa;AJ0Id;AAAA;;;;;;;;;;;;AAAA,KI3H9C,2BAAA,IAA+B,OAAA,EAAS,UAAU,EAAE,WAAA;AAAA,iBAmHhD,qBAAA,CACd,GAAA;EAAA,SAAgB,WAAA;EAAA,SAA8B,UAAA;AAAA,GAC9C,OAAA,EAAS,UAAU,EACnB,YAAA;AJUsD;AAGxD;;;;;;;;AAHwD,iBIiJxC,wBAAA,CACd,IAAA,EAAM,UAAA,SACN,EAAA,EAAI,UAAA,YACM,0BAAA;AAAA,UA8CK,yBAAA;EAAA,SACN,mBAAA;EAAA,SACA,gBAAA,GAAmB,kBAAA;EAAA,SACnB,aAAA,GAAgB,eAAA;EJ5JrB;;;;;;;EAAA,SIoKK,0BAAA,GAA6B,2BAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+BxB,2BAAA,CACd,OAAA,EAAS,UAAA,EACT,WAAA,UACA,OAAA,EAAS,yBAAA,GACR,WAAA;AAAA,iBAwBa,kBAAA,CACd,QAAA,EAAU,QAAA,CAAS,UAAA,UACnB,OAAA,EAAS,yBAAA,GACR,WAAA;;;;;;;;;;;;;;;UC3bc,oBAAA;EAAA,SACN,WAAA;EAAA,SACA,UAAA;EAAA,SACA,UAAA;EAAA,SACA,MAAA;EAAA,SACA,yBAAA,GAA4B,aAAa;ELiKzC;;;;AAEU;AAAA;;EAFV,SKzJA,gBAAA;AAAA;AL8J+C;AAAA;;;;;;;;;;;;AAAA,UK9IzC,iBAAA;EAAA,SACN,OAAA,EAAS,oBAAA;EAAA,SACT,MAAA,EAAQ,aAAa;EAAA,SACrB,WAAA;EAAA,SACA,gBAAA;AAAA;ALkJX;;;;;;;AAAA,iBKxIgB,oBAAA,CACd,OAAA,EAAS,oBAAA,cACT,oBAAA,EAAsB,aAAA,eACrB,aAAA;;;;;;;;;;;;;;iBA6Ca,6BAAA,QAAqC,OAAA;EAAA,SAC1C,KAAA,WAAgB,KAAA;EAAA,SAChB,QAAA,EAAU,QAAA,CAAS,UAAA;EAAA,SACnB,2BAAA,GAA8B,IAAA,EAAM,KAAA,KAAU,oBAAA;EAAA,SAC9C,kBAAA,GAAqB,IAAA,EAAM,KAAA;AAAA;EAAA,SAE3B,IAAA,WAAe,KAAA;EAAA,SACf,YAAA,WAAuB,iBAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;iBAmDlB,8BAAA,SAAuC,OAAA;EAAA,SAC5C,MAAA,WAAiB,MAAA;EAAA,SACjB,QAAA,EAAU,QAAA,CAAS,UAAA;EL4C5B;;;;EAAA,SKvCS,2BAAA,GAA8B,KAAA,EAAO,MAAA,KAAW,oBAAA;EL2C9C;;;;;;;;;;;EAAA,SK/BF,0BAAA,GAA6B,KAAA,EAAO,MAAA;AAAA;EAAA,SAEpC,SAAA,WAAoB,MAAA;EAAA,SACpB,YAAA,WAAuB,iBAAA;AAAA;;;UClKjB,+BAAA;ENkKc;AAA2B;AAAA;;EAA3B,SM7JpB,aAAA,EAAe,QAAA,CAAS,UAAA;ENgKQ;;;EAAA,SM5JhC,WAAA,EAAa,QAAA,CAAS,UAAA;EN8JuB;;;;;;;;;EAAA,SMpJ7C,UAAA,EAAY,WAAA,SAAoB,iBAAA;AAAA;AAAA,iBAa3B,wBAAA,CACd,OAAA,EAAS,+BAAA,YACC,aAAa;;;;;;;;;iBCtDT,uBAAA,CACd,mBAAA,GAAsB,aAAA,CAAc,8BAAA,qBAA8C,KAAA;EAAA,SAOvE,UAAA;EAAA,SACA,OAAA;EAAA,SACA,UAAA,GAAa,MAAA;AAAA;;;iBC4EV,mBAAA,iBACd,OAAA,EAAS,6BAAA,CAA8B,cAAA,IACtC,gBAAA,CAAiB,cAAA;AAAA,iBAcJ,cAAA,iBACd,IAAA,EAAM,gBAAA,CAAiB,cAAA,GACvB,QAAA,YAAoB,kBAAA,KACnB,uBAAA,CAAwB,cAAA;AAAA,iBAsBX,cAAA,CAAe,SAAA,WAAoB,kBAAA,KAAuB,uBAAuB;;;;iBAoBjF,aAAA,CAAc,KAAA;EAC5B,iBAAA;EACA,kBAAA;AAAA,IACE,EAAE,CAAC,8BAAA;;;;iBAYS,aAAA,CACd,IAAA,EAAM,2BAAA,EACN,OAAA,UACA,OAAA;EAAY,GAAA;EAAc,IAAA,GAAO,SAAA;AAAA,IAChC,KAAA,CAAM,yBAAA;;;;;;cC1KI,oBAAA,EAAsB,0BAEjC;;;;;ATqCkF;;;;;;;;;iBUjBpE,6BAAA,IAAiC,kCAAkC;AViK9D;;;;AAGqC;AAAA;;;;;AAHrC,iBU5IL,wBAAA,gEAGd,KAAA;EAAA,SAAkB,OAAA,EAAS,OAAA;EAAA,SAAkB,UAAA,EAAY,UAAA;AAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCuClB,QAAA"}
package/dist/control.mjs CHANGED
@@ -864,43 +864,10 @@ function callAllowedUnderControlPolicy(policy, subject) {
864
864
  case "observed": return false;
865
865
  }
866
866
  }
867
- function defaultSubjectLabel(factoryName, subject) {
868
- if (subject?.table) return `${factoryName}(${subject.table})`;
869
- if (subject?.typeName) return `${factoryName}(${subject.typeName})`;
870
- return factoryName;
871
- }
872
- function suppressionSummary(subjectLabel, subject, effectivePolicy) {
873
- const namespace = subject?.namespaceId ?? "unknown";
874
- const declared = subject?.explicitNodeControlPolicy;
875
- if (effectivePolicy === "external" && declared === "managed") return `control policy suppressed: ${subjectLabel} — namespace '${namespace}' has effective control 'external' but table declared 'managed'`;
876
- return `control policy suppressed: ${subjectLabel} — namespace '${namespace}' has effective control '${effectivePolicy}'${declared ? ` but table declared '${declared}'` : ""}`;
877
- }
878
- function buildSubjectSuppressionWarning(subject, effectivePolicy, factoryName, formatSubjectLabel) {
879
- return {
880
- kind: "controlPolicySuppressedCall",
881
- summary: suppressionSummary(formatSubjectLabel(factoryName, subject), subject, effectivePolicy),
882
- location: {
883
- ...ifDefined("namespace", subject?.namespaceId),
884
- ...ifDefined("table", subject?.table),
885
- ...ifDefined("column", subject?.column),
886
- ...ifDefined("type", subject?.typeName)
887
- },
888
- meta: {
889
- controlPolicy: effectivePolicy,
890
- factoryName,
891
- ...ifDefined("declaredControlPolicy", subject?.explicitNodeControlPolicy)
892
- }
893
- };
894
- }
895
- function defaultModificationFactoryNameForSubject(subject) {
896
- if (subject.table) return "alterTable";
897
- if (subject.typeName) return "alterType";
898
- return "alterSchema";
899
- }
900
867
  /**
901
868
  * Partition the calls produced for a single set of subjects into those the
902
869
  * effective control policy permits (`kept`) and a list of
903
- * {@link SqlPlannerConflict} warnings describing the suppressed calls.
870
+ * {@link SuppressionRecord}s describing the suppressed calls.
904
871
  *
905
872
  * **Prefer {@link partitionIssuesByControlPolicy}** for the schema-issue
906
873
  * pipeline: it filters subjects out of the planner's *input* so the planner
@@ -912,21 +879,22 @@ function defaultModificationFactoryNameForSubject(subject) {
912
879
  */
913
880
  function partitionCallsByControlPolicy(options) {
914
881
  const defaultControlPolicy = options.contract.defaultControlPolicy;
915
- const formatSubjectLabel = options.formatSubjectLabel ?? defaultSubjectLabel;
916
882
  const kept = [];
917
- const warnings = [];
883
+ const suppressions = [];
918
884
  for (const call of options.calls) {
919
885
  const subject = options.resolveControlPolicySubject(call);
920
886
  const policy = controlPolicyForCall(subject, defaultControlPolicy);
921
887
  if (callAllowedUnderControlPolicy(policy, subject)) kept.push(call);
922
- else {
923
- const factoryName = options.resolveFactoryName(call);
924
- warnings.push(buildSubjectSuppressionWarning(subject, policy, factoryName, formatSubjectLabel));
925
- }
888
+ else suppressions.push({
889
+ subject,
890
+ policy,
891
+ factoryName: options.resolveFactoryName(call),
892
+ createsNewObject: subject?.createsNewObject ?? false
893
+ });
926
894
  }
927
895
  return Object.freeze({
928
896
  kept: Object.freeze(kept),
929
- warnings: Object.freeze(warnings)
897
+ suppressions: Object.freeze(suppressions)
930
898
  });
931
899
  }
932
900
  /**
@@ -943,23 +911,18 @@ function partitionCallsByControlPolicy(options) {
943
911
  * cannot reason about the live shape of a subject the user marked as
944
912
  * out-of-scope (`external`).
945
913
  *
946
- * `warnings` is one {@link SqlPlannerConflict} per suppressed subject (not per
947
- * suppressed issue). `factoryName` is inferred from the subject's issue mix:
948
- * if any of the subject's issues is whole-object creation, the warning takes
949
- * the corresponding creation factoryName (e.g. `createTable`,
950
- * `createEnumType`, `createSchema`); otherwise it falls back to
951
- * `defaultModificationFactoryName(subject)` — a synthetic label that names
952
- * the *kind* of mutation that would have run, since no concrete DDL call was
953
- * generated.
914
+ * `suppressions` is one {@link SuppressionRecord} per suppressed subject (not
915
+ * per suppressed issue). Its `factoryName` is the creation factory name when any
916
+ * of the subject's issues is whole-object creation (e.g. `createTable`), else
917
+ * `undefined` — the family never invents a modification verb for an op that
918
+ * produced no call; the target renders the message.
954
919
  *
955
920
  * Unresolved-subject issues (`resolveControlPolicySubject` returns
956
- * `undefined`) emit one warning each; they cannot be deduplicated because
957
- * they carry no subject coordinate.
921
+ * `undefined`) emit one record each; they cannot be deduplicated because they
922
+ * carry no subject coordinate.
958
923
  */
959
924
  function partitionIssuesByControlPolicy(options) {
960
925
  const defaultControlPolicy = options.contract.defaultControlPolicy;
961
- const formatSubjectLabel = options.formatSubjectLabel ?? defaultSubjectLabel;
962
- const inferModificationFactoryName = options.defaultModificationFactoryName ?? defaultModificationFactoryNameForSubject;
963
926
  const plannable = [];
964
927
  const suppressedSubjects = /* @__PURE__ */ new Map();
965
928
  const unresolvedSuppressions = [];
@@ -976,8 +939,12 @@ function partitionIssuesByControlPolicy(options) {
976
939
  continue;
977
940
  }
978
941
  if (subject === void 0) {
979
- const factoryName = creationFactoryName ?? "unknown";
980
- unresolvedSuppressions.push(buildSubjectSuppressionWarning(void 0, policy, factoryName, formatSubjectLabel));
942
+ unresolvedSuppressions.push({
943
+ subject: void 0,
944
+ policy,
945
+ factoryName: creationFactoryName,
946
+ createsNewObject: false
947
+ });
981
948
  continue;
982
949
  }
983
950
  const key = subjectKey(subject);
@@ -990,18 +957,20 @@ function partitionIssuesByControlPolicy(options) {
990
957
  ...ifDefined("creationFactoryName", creationFactoryName)
991
958
  });
992
959
  }
993
- const warnings = [...unresolvedSuppressions];
994
- for (const entry of suppressedSubjects.values()) {
995
- const factoryName = entry.creationFactoryName ?? inferModificationFactoryName(entry.subject);
996
- warnings.push(buildSubjectSuppressionWarning(entry.subject, entry.policy, factoryName, formatSubjectLabel));
997
- }
960
+ const suppressions = [...unresolvedSuppressions];
961
+ for (const entry of suppressedSubjects.values()) suppressions.push({
962
+ subject: entry.subject,
963
+ policy: entry.policy,
964
+ factoryName: entry.creationFactoryName,
965
+ createsNewObject: entry.subject.createsNewObject
966
+ });
998
967
  return Object.freeze({
999
968
  plannable: Object.freeze(plannable),
1000
- warnings: Object.freeze(warnings)
969
+ suppressions: Object.freeze(suppressions)
1001
970
  });
1002
971
  }
1003
972
  function subjectKey(subject) {
1004
- return `${subject.namespaceId}\u0000${subject.table ?? ""}\u0000${subject.typeName ?? ""}`;
973
+ return `${subject.namespaceId}\u0000${subject.entityKind ?? ""}\u0000${subject.entityName ?? ""}`;
1005
974
  }
1006
975
  //#endregion
1007
976
  //#region src/core/migrations/field-event-planner.ts