@pl4yzonellc/valar-ui 1.0.4 → 1.0.5
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 * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, OnDestroy, OnChanges,
|
|
2
|
+
import { InjectionToken, EventEmitter, OnDestroy, OnChanges, SimpleChanges, ModuleWithProviders } from '@angular/core';
|
|
3
3
|
import { HttpClient } from '@angular/common/http';
|
|
4
4
|
import { Observable } from 'rxjs';
|
|
5
5
|
import * as i4 from '@angular/common';
|
|
@@ -9,11 +9,12 @@ import * as i5 from '@angular/forms';
|
|
|
9
9
|
* Primitive types allowed as feature flag values.
|
|
10
10
|
* Mirrors the backend's FlagPrimitive type.
|
|
11
11
|
*/
|
|
12
|
-
type
|
|
12
|
+
type FlagObject = Record<string, string>;
|
|
13
|
+
type FlagValue = boolean | string | number | null | FlagObject;
|
|
13
14
|
/**
|
|
14
15
|
* A group of feature flags: key → primitive value.
|
|
15
16
|
*/
|
|
16
|
-
type FlagGroup = Record<string,
|
|
17
|
+
type FlagGroup = Record<string, FlagValue>;
|
|
17
18
|
/**
|
|
18
19
|
* The full feature flags document for a tenant.
|
|
19
20
|
* Dynamic group names sit at the top level alongside metadata.
|
|
@@ -54,8 +55,8 @@ declare const RESERVED_KEYS: Set<string>;
|
|
|
54
55
|
interface PendingChange {
|
|
55
56
|
group: string;
|
|
56
57
|
key: string;
|
|
57
|
-
oldValue:
|
|
58
|
-
newValue:
|
|
58
|
+
oldValue: FlagValue;
|
|
59
|
+
newValue: FlagValue;
|
|
59
60
|
isNew?: boolean;
|
|
60
61
|
}
|
|
61
62
|
|
|
@@ -85,11 +86,85 @@ declare class FeatureFlagsApiService {
|
|
|
85
86
|
static ɵprov: i0.ɵɵInjectableDeclaration<FeatureFlagsApiService>;
|
|
86
87
|
}
|
|
87
88
|
|
|
89
|
+
type FlagValueType$1 = 'string' | 'boolean' | 'number' | 'object';
|
|
90
|
+
interface ObjectFieldEntry {
|
|
91
|
+
key: string;
|
|
92
|
+
value: string;
|
|
93
|
+
}
|
|
94
|
+
interface FlagEntry {
|
|
95
|
+
key: string;
|
|
96
|
+
value: FlagValue;
|
|
97
|
+
}
|
|
98
|
+
interface FlagChangedEvent {
|
|
99
|
+
key: string;
|
|
100
|
+
oldValue: FlagValue;
|
|
101
|
+
newValue: FlagValue;
|
|
102
|
+
}
|
|
103
|
+
declare class FlagGroupCardComponent {
|
|
104
|
+
groupName: string;
|
|
105
|
+
flags: FlagEntry[];
|
|
106
|
+
isNewGroup: boolean;
|
|
107
|
+
dirtyKeys: Set<string>;
|
|
108
|
+
isAddingFlag: boolean;
|
|
109
|
+
newFlagKey: string;
|
|
110
|
+
newFlagValue: string;
|
|
111
|
+
newFlagType: FlagValueType$1;
|
|
112
|
+
newFlagObjectEntries: ObjectFieldEntry[];
|
|
113
|
+
flagChanged: EventEmitter<FlagChangedEvent>;
|
|
114
|
+
revertFlag: EventEmitter<string>;
|
|
115
|
+
addFlagRequest: EventEmitter<void>;
|
|
116
|
+
cancelAddFlag: EventEmitter<void>;
|
|
117
|
+
confirmAddFlag: EventEmitter<void>;
|
|
118
|
+
newFlagKeyChange: EventEmitter<string>;
|
|
119
|
+
newFlagValueChange: EventEmitter<string>;
|
|
120
|
+
newFlagTypeChange: EventEmitter<FlagValueType$1>;
|
|
121
|
+
newFlagObjectEntriesChange: EventEmitter<ObjectFieldEntry[]>;
|
|
122
|
+
deleteFlagRequest: EventEmitter<string>;
|
|
123
|
+
deleteGroupRequest: EventEmitter<void>;
|
|
124
|
+
collapsed: boolean;
|
|
125
|
+
confirmDeleteGroup: boolean;
|
|
126
|
+
confirmDeleteKey: string | null;
|
|
127
|
+
/** Which flag key is currently in inline-edit mode */
|
|
128
|
+
editingKey: string | null;
|
|
129
|
+
editValue: string;
|
|
130
|
+
editType: FlagValueType$1;
|
|
131
|
+
editObjectEntries: ObjectFieldEntry[];
|
|
132
|
+
isDirty(key: string): boolean;
|
|
133
|
+
/** Enter inline-edit mode for a flag */
|
|
134
|
+
startEdit(flag: FlagEntry): void;
|
|
135
|
+
/** Commit the inline edit — emits change to parent, stays in view mode */
|
|
136
|
+
commitEdit(flag: FlagEntry): void;
|
|
137
|
+
/** Cancel inline edit without staging anything */
|
|
138
|
+
cancelEdit(): void;
|
|
139
|
+
displayValue(value: FlagValue): string;
|
|
140
|
+
typeBadgeClass(value: FlagValue): string;
|
|
141
|
+
typeLabel(value: FlagValue): string;
|
|
142
|
+
isBooleanFlag(value: FlagValue): boolean;
|
|
143
|
+
isObjectFlag(value: FlagValue): value is FlagObject;
|
|
144
|
+
onEditTypeChange(type: FlagValueType$1): void;
|
|
145
|
+
onNewFlagTypeChange(type: FlagValueType$1): void;
|
|
146
|
+
addEditObjectField(): void;
|
|
147
|
+
removeEditObjectField(index: number): void;
|
|
148
|
+
addNewObjectField(): void;
|
|
149
|
+
removeNewObjectField(index: number): void;
|
|
150
|
+
trackObjectField(index: number): number;
|
|
151
|
+
trackFlag(_index: number, flag: FlagEntry): string;
|
|
152
|
+
onDeleteFlag(key: string): void;
|
|
153
|
+
onDeleteGroup(): void;
|
|
154
|
+
private detectType;
|
|
155
|
+
private coerceValue;
|
|
156
|
+
private toObjectEntries;
|
|
157
|
+
private createObjectEntry;
|
|
158
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FlagGroupCardComponent, never>;
|
|
159
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FlagGroupCardComponent, "valar-flag-group-card", never, { "groupName": { "alias": "groupName"; "required": false; }; "flags": { "alias": "flags"; "required": false; }; "isNewGroup": { "alias": "isNewGroup"; "required": false; }; "dirtyKeys": { "alias": "dirtyKeys"; "required": false; }; "isAddingFlag": { "alias": "isAddingFlag"; "required": false; }; "newFlagKey": { "alias": "newFlagKey"; "required": false; }; "newFlagValue": { "alias": "newFlagValue"; "required": false; }; "newFlagType": { "alias": "newFlagType"; "required": false; }; "newFlagObjectEntries": { "alias": "newFlagObjectEntries"; "required": false; }; }, { "flagChanged": "flagChanged"; "revertFlag": "revertFlag"; "addFlagRequest": "addFlagRequest"; "cancelAddFlag": "cancelAddFlag"; "confirmAddFlag": "confirmAddFlag"; "newFlagKeyChange": "newFlagKeyChange"; "newFlagValueChange": "newFlagValueChange"; "newFlagTypeChange": "newFlagTypeChange"; "newFlagObjectEntriesChange": "newFlagObjectEntriesChange"; "deleteFlagRequest": "deleteFlagRequest"; "deleteGroupRequest": "deleteGroupRequest"; }, never, never, false, never>;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
type FlagValueType = 'string' | 'boolean' | 'number' | 'object';
|
|
88
163
|
interface ParsedGroup {
|
|
89
164
|
name: string;
|
|
90
165
|
flags: {
|
|
91
166
|
key: string;
|
|
92
|
-
value:
|
|
167
|
+
value: FlagValue;
|
|
93
168
|
}[];
|
|
94
169
|
}
|
|
95
170
|
declare class FeatureFlagsManagerComponent implements OnDestroy, OnChanges {
|
|
@@ -106,7 +181,8 @@ declare class FeatureFlagsManagerComponent implements OnDestroy, OnChanges {
|
|
|
106
181
|
addingFlagToGroup: string | null;
|
|
107
182
|
newFlagKey: string;
|
|
108
183
|
newFlagValue: string;
|
|
109
|
-
newFlagType:
|
|
184
|
+
newFlagType: FlagValueType;
|
|
185
|
+
newFlagObjectEntries: ObjectFieldEntry[];
|
|
110
186
|
/**
|
|
111
187
|
* Pending changes keyed by "group.key".
|
|
112
188
|
* Stores old/new values so we can display a diff summary.
|
|
@@ -127,8 +203,8 @@ declare class FeatureFlagsManagerComponent implements OnDestroy, OnChanges {
|
|
|
127
203
|
/** Called when a flag value is changed inline */
|
|
128
204
|
onFlagChanged(groupName: string, event: {
|
|
129
205
|
key: string;
|
|
130
|
-
oldValue:
|
|
131
|
-
newValue:
|
|
206
|
+
oldValue: FlagValue;
|
|
207
|
+
newValue: FlagValue;
|
|
132
208
|
}): void;
|
|
133
209
|
/** Revert a single flag's pending change */
|
|
134
210
|
revertFlag(groupName: string, key: string): void;
|
|
@@ -158,68 +234,14 @@ declare class FeatureFlagsManagerComponent implements OnDestroy, OnChanges {
|
|
|
158
234
|
static ɵcmp: i0.ɵɵComponentDeclaration<FeatureFlagsManagerComponent, "valar-feature-flags-manager", never, { "tenantId": { "alias": "tenantId"; "required": false; }; }, { "tenantIdChange": "tenantIdChange"; }, never, never, false, never>;
|
|
159
235
|
}
|
|
160
236
|
|
|
161
|
-
interface FlagEntry {
|
|
162
|
-
key: string;
|
|
163
|
-
value: FlagPrimitive;
|
|
164
|
-
}
|
|
165
|
-
interface FlagChangedEvent {
|
|
166
|
-
key: string;
|
|
167
|
-
oldValue: FlagPrimitive;
|
|
168
|
-
newValue: FlagPrimitive;
|
|
169
|
-
}
|
|
170
|
-
declare class FlagGroupCardComponent {
|
|
171
|
-
groupName: string;
|
|
172
|
-
flags: FlagEntry[];
|
|
173
|
-
isNewGroup: boolean;
|
|
174
|
-
dirtyKeys: Set<string>;
|
|
175
|
-
isAddingFlag: boolean;
|
|
176
|
-
newFlagKey: string;
|
|
177
|
-
newFlagValue: string;
|
|
178
|
-
newFlagType: 'string' | 'boolean' | 'number';
|
|
179
|
-
flagChanged: EventEmitter<FlagChangedEvent>;
|
|
180
|
-
revertFlag: EventEmitter<string>;
|
|
181
|
-
addFlagRequest: EventEmitter<void>;
|
|
182
|
-
cancelAddFlag: EventEmitter<void>;
|
|
183
|
-
confirmAddFlag: EventEmitter<void>;
|
|
184
|
-
newFlagKeyChange: EventEmitter<string>;
|
|
185
|
-
newFlagValueChange: EventEmitter<string>;
|
|
186
|
-
newFlagTypeChange: EventEmitter<"string" | "number" | "boolean">;
|
|
187
|
-
deleteFlagRequest: EventEmitter<string>;
|
|
188
|
-
deleteGroupRequest: EventEmitter<void>;
|
|
189
|
-
collapsed: boolean;
|
|
190
|
-
confirmDeleteGroup: boolean;
|
|
191
|
-
confirmDeleteKey: string | null;
|
|
192
|
-
/** Which flag key is currently in inline-edit mode */
|
|
193
|
-
editingKey: string | null;
|
|
194
|
-
editValue: string;
|
|
195
|
-
editType: 'string' | 'boolean' | 'number';
|
|
196
|
-
isDirty(key: string): boolean;
|
|
197
|
-
/** Enter inline-edit mode for a flag */
|
|
198
|
-
startEdit(flag: FlagEntry): void;
|
|
199
|
-
/** Commit the inline edit — emits change to parent, stays in view mode */
|
|
200
|
-
commitEdit(flag: FlagEntry): void;
|
|
201
|
-
/** Cancel inline edit without staging anything */
|
|
202
|
-
cancelEdit(): void;
|
|
203
|
-
displayValue(value: FlagPrimitive): string;
|
|
204
|
-
typeBadgeClass(value: FlagPrimitive): string;
|
|
205
|
-
typeLabel(value: FlagPrimitive): string;
|
|
206
|
-
isBooleanFlag(value: FlagPrimitive): boolean;
|
|
207
|
-
trackFlag(_index: number, flag: FlagEntry): string;
|
|
208
|
-
onDeleteFlag(key: string): void;
|
|
209
|
-
onDeleteGroup(): void;
|
|
210
|
-
private detectType;
|
|
211
|
-
private coerceValue;
|
|
212
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<FlagGroupCardComponent, never>;
|
|
213
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FlagGroupCardComponent, "valar-flag-group-card", never, { "groupName": { "alias": "groupName"; "required": false; }; "flags": { "alias": "flags"; "required": false; }; "isNewGroup": { "alias": "isNewGroup"; "required": false; }; "dirtyKeys": { "alias": "dirtyKeys"; "required": false; }; "isAddingFlag": { "alias": "isAddingFlag"; "required": false; }; "newFlagKey": { "alias": "newFlagKey"; "required": false; }; "newFlagValue": { "alias": "newFlagValue"; "required": false; }; "newFlagType": { "alias": "newFlagType"; "required": false; }; }, { "flagChanged": "flagChanged"; "revertFlag": "revertFlag"; "addFlagRequest": "addFlagRequest"; "cancelAddFlag": "cancelAddFlag"; "confirmAddFlag": "confirmAddFlag"; "newFlagKeyChange": "newFlagKeyChange"; "newFlagValueChange": "newFlagValueChange"; "newFlagTypeChange": "newFlagTypeChange"; "deleteFlagRequest": "deleteFlagRequest"; "deleteGroupRequest": "deleteGroupRequest"; }, never, never, false, never>;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
237
|
declare class ChangesSummaryModalComponent {
|
|
217
238
|
changes: PendingChange[];
|
|
218
239
|
tenantId: string;
|
|
219
240
|
confirm: EventEmitter<void>;
|
|
220
241
|
dismiss: EventEmitter<void>;
|
|
221
|
-
displayValue(value:
|
|
222
|
-
typeLabel(value:
|
|
242
|
+
displayValue(value: FlagValue): string;
|
|
243
|
+
typeLabel(value: FlagValue): string;
|
|
244
|
+
private isObjectValue;
|
|
223
245
|
static ɵfac: i0.ɵɵFactoryDeclaration<ChangesSummaryModalComponent, never>;
|
|
224
246
|
static ɵcmp: i0.ɵɵComponentDeclaration<ChangesSummaryModalComponent, "valar-changes-summary-modal", never, { "changes": { "alias": "changes"; "required": false; }; "tenantId": { "alias": "tenantId"; "required": false; }; }, { "confirm": "confirm"; "dismiss": "dismiss"; }, never, never, false, never>;
|
|
225
247
|
}
|
|
@@ -284,4 +306,4 @@ declare class MockFeatureFlagsApiService {
|
|
|
284
306
|
}
|
|
285
307
|
|
|
286
308
|
export { ChangesSummaryModalComponent, FEATURE_FLAGS_CONFIG, FeatureFlagsApiService, FeatureFlagsManagerComponent, FeatureFlagsModule, FlagGroupCardComponent, MockFeatureFlagsApiService, RESERVED_KEYS };
|
|
287
|
-
export type { FeatureFlagsConfig, FeatureFlagsDocument, FlagChangedEvent, FlagEntry, FlagGroup,
|
|
309
|
+
export type { FeatureFlagsConfig, FeatureFlagsDocument, FlagChangedEvent, FlagEntry, FlagGroup, FlagObject, FlagValue, ObjectFieldEntry, ParsedGroup, PendingChange, UpsertFlagsPayload };
|