@plyaz/types 1.15.18 → 1.15.20

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.
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Default Configuration Values
3
+ */
4
+ export declare const FEATURE_FLAG_DEFAULTS: {
5
+ readonly CACHE_TTL: 300;
6
+ readonly REFRESH_INTERVAL: 0;
7
+ readonly POOL_SIZE: 10;
8
+ readonly TIMEOUT: 30000;
9
+ readonly TABLE_NAME: "feature_flags";
10
+ };
11
+ /**
12
+ * Metadata keys used for attaching feature flag information
13
+ * to route handlers via decorators.
14
+ */
15
+ export declare const FEATURE_FLAG_METADATA: {
16
+ FLAG_CHECK: string;
17
+ RESOLVE_FLAGS: string;
18
+ };
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Sort direction for database queries
3
+ */
4
+ export declare enum SORT_DIRECTION {
5
+ Asc = "asc",
6
+ Desc = "desc"
7
+ }
8
+ /**
9
+ * Database table names enumeration
10
+ */
11
+ export declare enum DATABASE_TABLE {
12
+ FeatureFlags = "feature_flags",
13
+ FeatureFlagRules = "feature_flag_rules",
14
+ FeatureFlagEvaluations = "feature_flag_evaluations",
15
+ FeatureFlagOverrides = "feature_flag_overrides"
16
+ }
17
+ /**
18
+ * Database field names for feature flags table
19
+ */
20
+ export declare enum FEATURE_FLAG_FIELD {
21
+ Key = "key",
22
+ Value = "value",
23
+ IsEnabled = "is_enabled",
24
+ Environments = "environments",
25
+ Description = "description",
26
+ CreatedAt = "created_at",
27
+ UpdatedAt = "updated_at"
28
+ }
29
+ /**
30
+ * Database field names for feature flag rules table
31
+ */
32
+ export declare enum FEATURE_FLAG_RULE_FIELD {
33
+ Id = "id",
34
+ FlagKey = "flag_key",
35
+ Name = "name",
36
+ Conditions = "conditions",
37
+ Value = "value",
38
+ Priority = "priority",
39
+ IsEnabled = "is_enabled"
40
+ }
41
+ /**
42
+ * Feature Flag Provider Types
43
+ */
44
+ export declare enum FEATURE_FLAG_PROVIDERS {
45
+ MEMORY = "memory",
46
+ FILE = "file",
47
+ REDIS = "redis",
48
+ API = "api",
49
+ DATABASE = "database"
50
+ }
51
+ /**
52
+ * Node Environment Types
53
+ */
54
+ export declare enum NODE_ENVIRONMENTS {
55
+ DEVELOPMENT = "development",
56
+ PRODUCTION = "production",
57
+ STAGING = "staging",
58
+ TEST = "test"
59
+ }
60
+ /**
61
+ * Database Field Names
62
+ */
63
+ export declare enum DATABASE_FIELDS {
64
+ Key = "key",
65
+ FlagKey = "flag_key",
66
+ UserId = "user_id",
67
+ IsEnabled = "is_enabled",
68
+ CreatedAt = "created_at",
69
+ UpdatedAt = "updated_at",
70
+ ExpiresAt = "expires_at",
71
+ EvaluatedAt = "evaluated_at"
72
+ }
73
+ /**
74
+ * System User Constants
75
+ */
76
+ export declare enum SYSTEM_USERS {
77
+ SYSTEM = "system"
78
+ }
79
+ /**
80
+ * Evaluation Reasons
81
+ */
82
+ export declare enum EVALUATION_REASONS {
83
+ EVALUATION = "evaluation",
84
+ DefaultValue = "default_value",
85
+ RuleMatch = "rule_match",
86
+ OVERRIDE = "override"
87
+ }
88
+ /**
89
+ * Feature Flag Types
90
+ */
91
+ export declare enum FEATURE_FLAG_TYPES {
92
+ BOOLEAN = "boolean",
93
+ STRING = "string",
94
+ NUMBER = "number",
95
+ OBJECT = "object"
96
+ }
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Database Repository Types and Interfaces
3
+ *
4
+ * @description Comprehensive type definitions for feature flag database operations,
5
+ * including table schemas, query interfaces, and data transformation types.
6
+ * These types ensure type safety across the entire database layer.
7
+ */
8
+ import type { FEATURES } from '@plyaz/config';
9
+ import type { FeatureFlagCondition, FeatureFlagConfig, FeatureFlagValue } from '../../features';
10
+ /**
11
+ * Raw database row interface for feature flags table
12
+ */
13
+ export interface DatabaseFeatureFlagRow {
14
+ key: string;
15
+ value: FeatureFlagValue;
16
+ isEnabled?: boolean;
17
+ is_enabled?: boolean;
18
+ environments?: string[];
19
+ description?: string;
20
+ createdAt?: Date;
21
+ created_at?: string;
22
+ updatedAt?: Date;
23
+ updated_at?: string;
24
+ }
25
+ /**
26
+ * Raw database row interface for feature flag rules
27
+ */
28
+ export interface DatabaseFeatureFlagRuleRow {
29
+ id: string;
30
+ flagKey: string;
31
+ flag_key?: string;
32
+ name: string;
33
+ conditions: FeatureFlagCondition[];
34
+ value: FeatureFlagValue;
35
+ priority: number;
36
+ isEnabled: boolean;
37
+ is_enabled?: boolean;
38
+ }
39
+ /**
40
+ * Database override row interface
41
+ */
42
+ export interface DatabaseOverrideRow {
43
+ id: string;
44
+ flag_key: string;
45
+ user_id: string;
46
+ value: FeatureFlagValue;
47
+ expires_at?: string;
48
+ created_at: string;
49
+ }
50
+ /**
51
+ * Database evaluation log row interface
52
+ */
53
+ export interface DatabaseEvaluationRow {
54
+ id: string;
55
+ flag_key: string;
56
+ user_id?: string;
57
+ context?: Record<string, string | number | boolean>;
58
+ result: FeatureFlagValue;
59
+ reason: string;
60
+ evaluated_at: string;
61
+ }
62
+ /**
63
+ * Environment filter interface
64
+ */
65
+ export interface EnvironmentFilterRow {
66
+ environments?: string[];
67
+ }
68
+ /**
69
+ * Validation result interface
70
+ */
71
+ export interface FeatureFlagValidationResult {
72
+ isValid: boolean;
73
+ errors: ValidationError[];
74
+ warnings: ValidationWarning[];
75
+ }
76
+ /**
77
+ * Validation error interface
78
+ */
79
+ export interface ValidationError {
80
+ field: string;
81
+ message: string;
82
+ code: string;
83
+ }
84
+ /**
85
+ * Validation warning interface
86
+ */
87
+ export interface ValidationWarning {
88
+ field: string;
89
+ message: string;
90
+ code: string;
91
+ }
92
+ /**
93
+ * Database configuration interface
94
+ */
95
+ export interface FeatureFlagDatabaseConfig {
96
+ connectionString: string;
97
+ tableName: string;
98
+ poolSize?: number;
99
+ timeout?: number;
100
+ }
101
+ /**
102
+ * Environment-specific feature flag configuration
103
+ */
104
+ export interface FeatureFlagEnvironmentConfig extends Omit<FeatureFlagConfig<FeatureFlagKey>, 'databaseConfig'> {
105
+ databaseConfig?: FeatureFlagDatabaseConfig;
106
+ }
107
+ /**
108
+ * Union type of all available feature flag keys.
109
+ * Automatically derived from the FEATURES constant for type safety.
110
+ */
111
+ export type FeatureFlagKey = keyof typeof FEATURES;
112
+ export type FeatureFlags = typeof FEATURES extends Record<FeatureFlagKey, FeatureFlagValue> ? typeof FEATURES : never;
@@ -7,3 +7,6 @@
7
7
  export type { ApiEnvironmentConfig, ApiProviderProps } from './services';
8
8
  export * from './tables/enum';
9
9
  export type * from './auth/types';
10
+ export type * from './featureFlag/types';
11
+ export * from './featureFlag/enums';
12
+ export * from './featureFlag/constants';
package/dist/index.cjs CHANGED
@@ -63,6 +63,99 @@ var TABLES = /* @__PURE__ */ ((TABLES2) => {
63
63
  return TABLES2;
64
64
  })(TABLES || {});
65
65
 
66
+ // src/core/featureFlag/enums.ts
67
+ var SORT_DIRECTION = /* @__PURE__ */ ((SORT_DIRECTION2) => {
68
+ SORT_DIRECTION2["Asc"] = "asc";
69
+ SORT_DIRECTION2["Desc"] = "desc";
70
+ return SORT_DIRECTION2;
71
+ })(SORT_DIRECTION || {});
72
+ var DATABASE_TABLE = /* @__PURE__ */ ((DATABASE_TABLE2) => {
73
+ DATABASE_TABLE2["FeatureFlags"] = "feature_flags";
74
+ DATABASE_TABLE2["FeatureFlagRules"] = "feature_flag_rules";
75
+ DATABASE_TABLE2["FeatureFlagEvaluations"] = "feature_flag_evaluations";
76
+ DATABASE_TABLE2["FeatureFlagOverrides"] = "feature_flag_overrides";
77
+ return DATABASE_TABLE2;
78
+ })(DATABASE_TABLE || {});
79
+ var FEATURE_FLAG_FIELD = /* @__PURE__ */ ((FEATURE_FLAG_FIELD2) => {
80
+ FEATURE_FLAG_FIELD2["Key"] = "key";
81
+ FEATURE_FLAG_FIELD2["Value"] = "value";
82
+ FEATURE_FLAG_FIELD2["IsEnabled"] = "is_enabled";
83
+ FEATURE_FLAG_FIELD2["Environments"] = "environments";
84
+ FEATURE_FLAG_FIELD2["Description"] = "description";
85
+ FEATURE_FLAG_FIELD2["CreatedAt"] = "created_at";
86
+ FEATURE_FLAG_FIELD2["UpdatedAt"] = "updated_at";
87
+ return FEATURE_FLAG_FIELD2;
88
+ })(FEATURE_FLAG_FIELD || {});
89
+ var FEATURE_FLAG_RULE_FIELD = /* @__PURE__ */ ((FEATURE_FLAG_RULE_FIELD2) => {
90
+ FEATURE_FLAG_RULE_FIELD2["Id"] = "id";
91
+ FEATURE_FLAG_RULE_FIELD2["FlagKey"] = "flag_key";
92
+ FEATURE_FLAG_RULE_FIELD2["Name"] = "name";
93
+ FEATURE_FLAG_RULE_FIELD2["Conditions"] = "conditions";
94
+ FEATURE_FLAG_RULE_FIELD2["Value"] = "value";
95
+ FEATURE_FLAG_RULE_FIELD2["Priority"] = "priority";
96
+ FEATURE_FLAG_RULE_FIELD2["IsEnabled"] = "is_enabled";
97
+ return FEATURE_FLAG_RULE_FIELD2;
98
+ })(FEATURE_FLAG_RULE_FIELD || {});
99
+ var FEATURE_FLAG_PROVIDERS = /* @__PURE__ */ ((FEATURE_FLAG_PROVIDERS2) => {
100
+ FEATURE_FLAG_PROVIDERS2["MEMORY"] = "memory";
101
+ FEATURE_FLAG_PROVIDERS2["FILE"] = "file";
102
+ FEATURE_FLAG_PROVIDERS2["REDIS"] = "redis";
103
+ FEATURE_FLAG_PROVIDERS2["API"] = "api";
104
+ FEATURE_FLAG_PROVIDERS2["DATABASE"] = "database";
105
+ return FEATURE_FLAG_PROVIDERS2;
106
+ })(FEATURE_FLAG_PROVIDERS || {});
107
+ var NODE_ENVIRONMENTS = /* @__PURE__ */ ((NODE_ENVIRONMENTS2) => {
108
+ NODE_ENVIRONMENTS2["DEVELOPMENT"] = "development";
109
+ NODE_ENVIRONMENTS2["PRODUCTION"] = "production";
110
+ NODE_ENVIRONMENTS2["STAGING"] = "staging";
111
+ NODE_ENVIRONMENTS2["TEST"] = "test";
112
+ return NODE_ENVIRONMENTS2;
113
+ })(NODE_ENVIRONMENTS || {});
114
+ var DATABASE_FIELDS = /* @__PURE__ */ ((DATABASE_FIELDS2) => {
115
+ DATABASE_FIELDS2["Key"] = "key";
116
+ DATABASE_FIELDS2["FlagKey"] = "flag_key";
117
+ DATABASE_FIELDS2["UserId"] = "user_id";
118
+ DATABASE_FIELDS2["IsEnabled"] = "is_enabled";
119
+ DATABASE_FIELDS2["CreatedAt"] = "created_at";
120
+ DATABASE_FIELDS2["UpdatedAt"] = "updated_at";
121
+ DATABASE_FIELDS2["ExpiresAt"] = "expires_at";
122
+ DATABASE_FIELDS2["EvaluatedAt"] = "evaluated_at";
123
+ return DATABASE_FIELDS2;
124
+ })(DATABASE_FIELDS || {});
125
+ var SYSTEM_USERS = /* @__PURE__ */ ((SYSTEM_USERS2) => {
126
+ SYSTEM_USERS2["SYSTEM"] = "system";
127
+ return SYSTEM_USERS2;
128
+ })(SYSTEM_USERS || {});
129
+ var EVALUATION_REASONS = /* @__PURE__ */ ((EVALUATION_REASONS2) => {
130
+ EVALUATION_REASONS2["EVALUATION"] = "evaluation";
131
+ EVALUATION_REASONS2["DefaultValue"] = "default_value";
132
+ EVALUATION_REASONS2["RuleMatch"] = "rule_match";
133
+ EVALUATION_REASONS2["OVERRIDE"] = "override";
134
+ return EVALUATION_REASONS2;
135
+ })(EVALUATION_REASONS || {});
136
+ var FEATURE_FLAG_TYPES = /* @__PURE__ */ ((FEATURE_FLAG_TYPES2) => {
137
+ FEATURE_FLAG_TYPES2["BOOLEAN"] = "boolean";
138
+ FEATURE_FLAG_TYPES2["STRING"] = "string";
139
+ FEATURE_FLAG_TYPES2["NUMBER"] = "number";
140
+ FEATURE_FLAG_TYPES2["OBJECT"] = "object";
141
+ return FEATURE_FLAG_TYPES2;
142
+ })(FEATURE_FLAG_TYPES || {});
143
+
144
+ // src/core/featureFlag/constants.ts
145
+ var FEATURE_FLAG_DEFAULTS = {
146
+ CACHE_TTL: 300,
147
+ REFRESH_INTERVAL: 0,
148
+ POOL_SIZE: 10,
149
+ TIMEOUT: 3e4,
150
+ TABLE_NAME: "feature_flags"
151
+ };
152
+ var FEATURE_FLAG_METADATA = {
153
+ FLAG_CHECK: "plyaz:feature_flag_check",
154
+ // Single feature flag check
155
+ RESOLVE_FLAGS: "plyaz:resolve_feature_flags"
156
+ // Multiple flags resolved at once
157
+ };
158
+
66
159
  // src/errors/enums.ts
67
160
  var ERROR_TYPE = {
68
161
  /** A general validation error (e.g., form or input errors). */
@@ -5295,6 +5388,8 @@ exports.ContactUsFormSchema = ContactUsFormSchema;
5295
5388
  exports.CorrelationIdSchema = CorrelationIdSchema;
5296
5389
  exports.DATABASE_ERROR_CODES = DATABASE_ERROR_CODES;
5297
5390
  exports.DATABASE_EVENT_TYPE = DATABASE_EVENT_TYPE;
5391
+ exports.DATABASE_FIELDS = DATABASE_FIELDS;
5392
+ exports.DATABASE_TABLE = DATABASE_TABLE;
5298
5393
  exports.DATA_SAVER_PRESETS = DATA_SAVER_PRESETS;
5299
5394
  exports.DB_POOL_EVENTS = DB_POOL_EVENTS;
5300
5395
  exports.DEBUGGER_CONFIG_SOURCES = DEBUGGER_CONFIG_SOURCES;
@@ -5311,6 +5406,7 @@ exports.ERROR_EXCEPTIONS_NAMESPACES = ERROR_EXCEPTIONS_NAMESPACES;
5311
5406
  exports.ERROR_FIELDS = COMMON_FIELDS;
5312
5407
  exports.ERROR_SEVERITY = ERROR_SEVERITY;
5313
5408
  exports.ERROR_TYPE = ERROR_TYPE;
5409
+ exports.EVALUATION_REASONS = EVALUATION_REASONS;
5314
5410
  exports.EVENTS_CONFIG_SOURCES = EVENTS_CONFIG_SOURCES;
5315
5411
  exports.EVENT_CONSTANTS = EVENT_CONSTANTS;
5316
5412
  exports.EVENT_NAMESPACES = EVENT_NAMESPACES;
@@ -5325,6 +5421,12 @@ exports.EVENT_TYPE = EVENT_TYPE;
5325
5421
  exports.EmailSchema = EmailSchema;
5326
5422
  exports.FACTORY_OPERATIONS = FACTORY_OPERATIONS;
5327
5423
  exports.FAIL_OVER_STRATEGY = FAIL_OVER_STRATEGY;
5424
+ exports.FEATURE_FLAG_DEFAULTS = FEATURE_FLAG_DEFAULTS;
5425
+ exports.FEATURE_FLAG_FIELD = FEATURE_FLAG_FIELD;
5426
+ exports.FEATURE_FLAG_METADATA = FEATURE_FLAG_METADATA;
5427
+ exports.FEATURE_FLAG_PROVIDERS = FEATURE_FLAG_PROVIDERS;
5428
+ exports.FEATURE_FLAG_RULE_FIELD = FEATURE_FLAG_RULE_FIELD;
5429
+ exports.FEATURE_FLAG_TYPES = FEATURE_FLAG_TYPES;
5328
5430
  exports.FILE_EXTENSIONS = FILE_EXTENSIONS;
5329
5431
  exports.HANDLER_SCOPES = HANDLER_SCOPES;
5330
5432
  exports.HEADER_EVENTS = HEADER_EVENTS;
@@ -5353,6 +5455,7 @@ exports.MIME_TYPES = MIME_TYPES;
5353
5455
  exports.NETWORK_CONFIDENCE_LEVELS = NETWORK_CONFIDENCE_LEVELS;
5354
5456
  exports.NETWORK_EVENTS = NETWORK_EVENTS;
5355
5457
  exports.NETWORK_QUALITY = NETWORK_QUALITY;
5458
+ exports.NODE_ENVIRONMENTS = NODE_ENVIRONMENTS;
5356
5459
  exports.NOTIFICATION_CATEGORIES = NOTIFICATION_CATEGORIES;
5357
5460
  exports.NOTIFICATION_CHANNELS = NOTIFICATION_CHANNELS;
5358
5461
  exports.NOTIFICATION_ERROR_CODES = NOTIFICATION_ERROR_CODES;
@@ -5392,8 +5495,10 @@ exports.ROUTING_STRATEGY = ROUTING_STRATEGY;
5392
5495
  exports.RTT_THRESHOLDS = RTT_THRESHOLDS;
5393
5496
  exports.SECURITY_THREAT_TYPE = SECURITY_THREAT_TYPE;
5394
5497
  exports.SIGNATURE_METHOD = SIGNATURE_METHOD;
5498
+ exports.SORT_DIRECTION = SORT_DIRECTION;
5395
5499
  exports.SPEED_THRESHOLDS = SPEED_THRESHOLDS;
5396
5500
  exports.STORAGE_TYPES = COMMON_STORAGE_TYPES;
5501
+ exports.SYSTEM_USERS = SYSTEM_USERS;
5397
5502
  exports.SendGridEventSchema = SendGridEventSchema;
5398
5503
  exports.SendGridWebhookSchema = SendGridWebhookSchema;
5399
5504
  exports.SignupFormSchema = SignupFormSchema;