@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.
- package/dist/control.d.mts +42 -30
- package/dist/control.d.mts.map +1 -1
- package/dist/control.mjs +31 -62
- package/dist/control.mjs.map +1 -1
- package/dist/diff.d.mts +4 -4
- package/dist/migration.d.mts +1 -1
- package/dist/schema-verify-W3r631Jh.mjs.map +1 -1
- package/dist/{types-COTsneBU.d.mts → types-9DnjnhkE.d.mts} +6 -7
- package/dist/types-9DnjnhkE.d.mts.map +1 -0
- package/package.json +21 -21
- package/src/core/diff/schema-verify.ts +3 -3
- package/src/core/migrations/control-policy.ts +66 -115
- package/src/core/migrations/types.ts +5 -6
- package/src/exports/control.ts +1 -1
- package/dist/types-COTsneBU.d.mts.map +0 -1
package/dist/control.d.mts
CHANGED
|
@@ -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-
|
|
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
|
|
573
|
-
readonly
|
|
578
|
+
readonly entityKind?: string;
|
|
579
|
+
readonly entityName?: string;
|
|
574
580
|
readonly column?: string;
|
|
575
|
-
readonly
|
|
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
|
|
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
|
|
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
|
-
* `
|
|
631
|
-
* suppressed issue). `factoryName` is
|
|
632
|
-
*
|
|
633
|
-
* the
|
|
634
|
-
*
|
|
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
|
|
641
|
-
*
|
|
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.
|
|
660
|
-
*
|
|
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
|
|
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
|
package/dist/control.d.mts.map
CHANGED
|
@@ -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":"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
|
|
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
|
|
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
|
|
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
|
-
|
|
924
|
-
|
|
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
|
-
|
|
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
|
-
* `
|
|
947
|
-
* suppressed issue). `factoryName` is
|
|
948
|
-
*
|
|
949
|
-
* the
|
|
950
|
-
*
|
|
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
|
|
957
|
-
*
|
|
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
|
-
|
|
980
|
-
|
|
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
|
|
994
|
-
for (const entry of suppressedSubjects.values()) {
|
|
995
|
-
|
|
996
|
-
|
|
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
|
-
|
|
969
|
+
suppressions: Object.freeze(suppressions)
|
|
1001
970
|
});
|
|
1002
971
|
}
|
|
1003
972
|
function subjectKey(subject) {
|
|
1004
|
-
return `${subject.namespaceId}\u0000${subject.
|
|
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
|