Describe the feature
// v1.x — separate "Any" types
type GuantrAnyRule = { resource: string; action: string; condition: ... };
type GuantrRule<Meta, Context, ResourceKey> = /* typed version */;
type GuantrAnyRuleCondition = { [key: string]: ... };
type GuantrAnyRuleConditionExpression = [...];
// v2.0 — unified types, untyped when no generics provided
type GuantrRule = { resource: string; action: string; condition?: ... };
type GuantrRule<Meta, Context, ResourceKey> = /* typed version when Meta provided */;
type GuantrRuleCondition = { [key: string]: ... };
type GuantrRuleCondition<Model, Context> = /* typed version when Model provided */;
type GuantrRuleConditionExpression = [...];
Rationale
GuantrAnyRule / GuantrAnyRuleCondition are just GuantrRule / GuantrRuleCondition
without type arguments. Having separate names is confusing and redundant.
Migration
GuantrAnyRule → GuantrRule (no type args)
GuantrAnyRuleCondition → GuantrRuleCondition (no type args)
GuantrAnyRuleConditionExpression → GuantrRuleConditionExpression (no type args)
Implementation Tasks
Additional information
Final checks
Describe the feature
Rationale
GuantrAnyRule/GuantrAnyRuleConditionare justGuantrRule/GuantrRuleConditionwithout type arguments. Having separate names is confusing and redundant.
Migration
GuantrAnyRule→GuantrRule(no type args)GuantrAnyRuleCondition→GuantrRuleCondition(no type args)GuantrAnyRuleConditionExpression→GuantrRuleConditionExpression(no type args)Implementation Tasks
GuantrRuledefault to untyped when noMetais providedGuantrRuleConditiondefault to untyped when noModelis providedGuantrAnyRule,GuantrAnyRuleCondition,GuantrAnyRuleConditionExpressionStorageinterfaceAdditional information
Final checks