@flagshark/core 2.1.0 → 2.2.0
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/output/text.d.ts.map +1 -1
- package/dist/output/text.js +56 -0
- package/dist/output/text.js.map +1 -1
- package/dist/providers/cross-reference.d.ts +12 -0
- package/dist/providers/cross-reference.d.ts.map +1 -1
- package/dist/providers/cross-reference.js +41 -0
- package/dist/providers/cross-reference.js.map +1 -1
- package/dist/providers/interface.d.ts +50 -1
- package/dist/providers/interface.d.ts.map +1 -1
- package/dist/providers/launchdarkly/client.d.ts.map +1 -1
- package/dist/providers/launchdarkly/client.js +188 -1
- package/dist/providers/launchdarkly/client.js.map +1 -1
- package/dist/providers/launchdarkly/types.d.ts +172 -0
- package/dist/providers/launchdarkly/types.d.ts.map +1 -1
- package/dist/providers/launchdarkly/types.js +59 -0
- package/dist/providers/launchdarkly/types.js.map +1 -1
- package/dist/staleness.d.ts +1 -1
- package/dist/staleness.d.ts.map +1 -1
- package/dist/staleness.js +78 -3
- package/dist/staleness.js.map +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/output/text.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAGrD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAA;CACnB;
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/output/text.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAGrD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAA;CACnB;AA2GD,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAuJrF"}
|
package/dist/output/text.js
CHANGED
|
@@ -29,6 +29,8 @@ function buildTable(flags) {
|
|
|
29
29
|
return 'Age > threshold';
|
|
30
30
|
if (s.type === 'low-usage')
|
|
31
31
|
return 'Single file';
|
|
32
|
+
if (s.type === 'test-only-references')
|
|
33
|
+
return 'Test files only';
|
|
32
34
|
if (s.type === 'missing-in-platform')
|
|
33
35
|
return 'missing-in-platform';
|
|
34
36
|
if (s.type === 'archived-in-platform')
|
|
@@ -39,6 +41,12 @@ function buildTable(flags) {
|
|
|
39
41
|
return 'platform-inactive';
|
|
40
42
|
if (s.type === 'platform-launched')
|
|
41
43
|
return 'platform-launched';
|
|
44
|
+
if (s.type === 'platform-zero-evaluations')
|
|
45
|
+
return 'platform-zero-evaluations';
|
|
46
|
+
if (s.type === 'platform-low-evaluations')
|
|
47
|
+
return 'platform-low-evaluations';
|
|
48
|
+
if (s.type === 'platform-untouched-stale')
|
|
49
|
+
return 'platform-untouched-stale';
|
|
42
50
|
return s.description;
|
|
43
51
|
})
|
|
44
52
|
.join(', ');
|
|
@@ -66,6 +74,39 @@ function buildTable(flags) {
|
|
|
66
74
|
lines.push(hBorder('└', '┴', '┘'));
|
|
67
75
|
return lines.join('\n');
|
|
68
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Build a per-flag detail card for --verbose output. Includes every
|
|
79
|
+
* field FlagShark knows about for the flag: code location, age,
|
|
80
|
+
* platform-side metadata (maintainer, tags, platform-status), and
|
|
81
|
+
* the full description of each signal (the table truncates these).
|
|
82
|
+
*
|
|
83
|
+
* Renders as an indented, dash-prefixed block — easy to scan in a
|
|
84
|
+
* terminal, structured enough to be parseable for anyone who wants
|
|
85
|
+
* to grep it.
|
|
86
|
+
*/
|
|
87
|
+
function buildDetailCard(sf, index) {
|
|
88
|
+
const lines = [];
|
|
89
|
+
lines.push(`[${index}] ${sf.name}`);
|
|
90
|
+
lines.push(` File: ${sf.filePath}:${sf.lineNumber}`);
|
|
91
|
+
lines.push(` Language: ${sf.language}`);
|
|
92
|
+
lines.push(` Provider: ${sf.provider}`);
|
|
93
|
+
if (sf.age)
|
|
94
|
+
lines.push(` Added: ${sf.age}`);
|
|
95
|
+
if (sf.confidence && sf.confidence !== 'high') {
|
|
96
|
+
lines.push(` Detection confidence: ${sf.confidence}`);
|
|
97
|
+
}
|
|
98
|
+
if (sf.maintainer)
|
|
99
|
+
lines.push(` Maintainer: ${sf.maintainer}`);
|
|
100
|
+
if (sf.tags && sf.tags.length > 0)
|
|
101
|
+
lines.push(` Tags: ${sf.tags.join(', ')}`);
|
|
102
|
+
if (sf.platformStatus)
|
|
103
|
+
lines.push(` Platform status: ${sf.platformStatus}`);
|
|
104
|
+
lines.push(` Signals:`);
|
|
105
|
+
for (const s of sf.signals) {
|
|
106
|
+
lines.push(` • ${s.type} (${s.severity}): ${s.description}`);
|
|
107
|
+
}
|
|
108
|
+
return lines;
|
|
109
|
+
}
|
|
69
110
|
export function formatText(result, options) {
|
|
70
111
|
const lines = [];
|
|
71
112
|
lines.push(`\u{1F988} FlagShark`);
|
|
@@ -166,6 +207,21 @@ export function formatText(result, options) {
|
|
|
166
207
|
lines.push('');
|
|
167
208
|
lines.push(`... and ${remaining} more (use --verbose to see all)`);
|
|
168
209
|
}
|
|
210
|
+
// Verbose mode: per-flag detail cards after the table. Includes the
|
|
211
|
+
// full signal descriptions (the table truncates them) plus every
|
|
212
|
+
// platform-side metadata field FlagShark knows about. Designed to
|
|
213
|
+
// give reviewers everything they need without context-switching to
|
|
214
|
+
// the LD dashboard.
|
|
215
|
+
if (options.verbose) {
|
|
216
|
+
lines.push('');
|
|
217
|
+
lines.push('Flag details:');
|
|
218
|
+
lines.push('');
|
|
219
|
+
for (let i = 0; i < displayFlags.length; i++) {
|
|
220
|
+
lines.push(...buildDetailCard(displayFlags[i], i + 1));
|
|
221
|
+
if (i < displayFlags.length - 1)
|
|
222
|
+
lines.push('');
|
|
223
|
+
}
|
|
224
|
+
}
|
|
169
225
|
}
|
|
170
226
|
lines.push('');
|
|
171
227
|
if (staleCount === 0) {
|
package/dist/output/text.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/output/text.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH,SAAS,WAAW,CAAC,OAAiD;IACpE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;AAC1E,CAAC;AAED,SAAS,YAAY,CAAC,CAAsB;IAC1C,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9B,CAAC;AAED,4EAA4E;AAC5E,SAAS,GAAG,CAAC,GAAW,EAAE,KAAa;IACrC,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACtC,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC1B,CAAC;AAED,SAAS,UAAU,CAAC,KAAkB;IACpC,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;IAE1D,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,GAAW,EAAE,KAAa,EAAE,EAAE,CAC3D,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAA;IAExJ,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;IAClC,KAAK,CAAC,IAAI,CACR,KAAK,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAC1H,CAAA;IACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;IAElC,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,UAAU,EAAE,CAAA;QACjD,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO;aAC1B,GAAG,CAAC,CAAC,CAAkB,EAAE,EAAE;YAC1B,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK;gBAAE,OAAO,iBAAiB,CAAA;YAC9C,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;gBAAE,OAAO,aAAa,CAAA;YAChD,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAqB;gBAAE,OAAO,qBAAqB,CAAA;YAClE,IAAI,CAAC,CAAC,IAAI,KAAK,sBAAsB;gBAAE,OAAO,sBAAsB,CAAA;YACpE,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB;gBAAE,OAAO,kBAAkB,CAAA;YAC5D,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAmB;gBAAE,OAAO,mBAAmB,CAAA;YAC9D,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAmB;gBAAE,OAAO,mBAAmB,CAAA;YAC9D,OAAO,CAAC,CAAC,WAAW,CAAA;QACtB,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAA;QACb,KAAK,CAAC,IAAI,CACR,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAC1I,CAAA;QACD,gEAAgE;QAChE,kEAAkE;QAClE,yDAAyD;QACzD,MAAM,SAAS,GAAa,EAAE,CAAA;QAC9B,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC/C,CAAC;QACD,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;YAClB,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,UAAU,EAAE,CAAC,CAAA;QAChD,CAAC;QACD,IAAI,EAAE,CAAC,cAAc,IAAI,EAAE,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;YACxD,SAAS,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,cAAc,EAAE,CAAC,CAAA;QACzD,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACtC,uDAAuD;YACvD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA,CAAC,iCAAiC;YACzG,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,GAAG,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,CAAA;QAC1D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;IAClC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAsB,EAAE,OAA0B;IAC3E,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IACjC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEd,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAA;IAC9D,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,YAAY,iBAAiB,SAAS,YAAY,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA;IAC5G,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,aAAa,4CAA4C,CAAC,CAAA;IAClF,CAAC;IAED,4EAA4E;IAC5E,2EAA2E;IAC3E,wEAAwE;IACxE,2EAA2E;IAC3E,wEAAwE;IACxE,4EAA4E;IAC5E,8DAA8D;IAC9D,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,CAAC,CAAA;IACnD,IAAI,eAAe,GAAG,CAAC,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;QACnD,MAAM,GAAG,GAAG,CAAC,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,GAAG,CAAA;QACzD,kEAAkE;QAClE,wEAAwE;QACxE,qEAAqE;QACrE,mEAAmE;QACnE,uBAAuB;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC/B,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;QAC/C,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CACR,KAAK,eAAe,OAAO,MAAM,CAAC,YAAY,SAAS,MAAM,yIAAyI,CACvM,CAAA;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CACR,IAAI,eAAe,QAAQ,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,6EAA6E,CACzI,CAAA;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;QACxC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAA;QAC7F,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAA;QAElE,wEAAwE;QACxE,qEAAqE;QACrE,sEAAsE;QACtE,iEAAiE;QACjE,iEAAiE;QACjE,qEAAqE;QACrE,qEAAqE;QACrE,iEAAiE;QACjE,yDAAyD;QACzD,MAAM,oBAAoB,GAAG,GAAG,CAAA;QAChC,IAAI,MAAM,CAAC,YAAY,IAAI,oBAAoB,EAAE,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACd,KAAK,CAAC,IAAI,CAAC,4BAA4B,MAAM,CAAC,YAAY,uDAAuD,CAAC,CAAA;YAClH,KAAK,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAA;YAC1F,KAAK,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAA;YAC1F,KAAK,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAA;YACnF,KAAK,CAAC,IAAI,CAAC,yFAAyF,CAAC,CAAA;QACvG,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAED,IAAI,MAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC1E,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IACtE,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAA;IACxC,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,UAAU,mBAAmB,UAAU,QAAQ,CAAC,CAAA;IAE3E,0EAA0E;IAC1E,sEAAsE;IACtE,+DAA+D;IAC/D,IAAI,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrF,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC3E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAQ;YAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;YACtD,8DAA8D;YAC9D,+DAA+D;YAC/D,gEAAgE;YAChE,+DAA+D;YAC/D,gCAAgC;YAChC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;YACtE,KAAK,CAAC,IAAI,CACR,GAAG,KAAK,CAAC,MAAM,IAAI,QAAQ,6BAA6B,QAAQ,KAAK,OAAO,GAAG,QAAQ,EAAE,CAC1F,CAAA;QACH,CAAC;IACH,CAAC;IAED,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC1B,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAClD,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;YACjD,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;YACjD,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO,IAAI,GAAG,IAAI,CAAA;YACrC,OAAO,CAAC,CAAA;QACV,CAAC,CAAC,CAAA;QACF,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;QAC5F,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;QAClD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAA;QACpC,MAAM,SAAS,GAAG,UAAU,GAAG,YAAY,CAAA;QAC3C,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACd,KAAK,CAAC,IAAI,CAAC,WAAW,SAAS,kCAAkC,CAAC,CAAA;QACpE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,WAAW,gCAAgC,CAAC,CAAA;IACtF,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CACR,sBAAsB,MAAM,CAAC,WAAW,SAAS,UAAU,IAAI,MAAM,CAAC,UAAU,mBAAmB,CACpG,CAAA;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;QACtD,KAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAA;IACzE,CAAC;IAED,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,CAAA;QAC9D,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/output/text.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,18 @@ export interface CrossReferenceOptions {
|
|
|
9
9
|
* When unset, the platform-too-old signal is never emitted.
|
|
10
10
|
*/
|
|
11
11
|
thresholdDays?: number;
|
|
12
|
+
/**
|
|
13
|
+
* Minimum evaluation count over the platform's reporting window
|
|
14
|
+
* (30 days for LD) below which a flag is considered "rarely used"
|
|
15
|
+
* and emits `platform-low-evaluations`. The `platform-zero-evaluations`
|
|
16
|
+
* signal (count exactly 0) is independent of this — it always fires
|
|
17
|
+
* regardless of threshold when the platform reports a real zero.
|
|
18
|
+
*
|
|
19
|
+
* Default: 10. Tuned for "small project, real usage" — set higher
|
|
20
|
+
* for high-traffic prod environments where 10 evaluations/30d is
|
|
21
|
+
* still effectively dead.
|
|
22
|
+
*/
|
|
23
|
+
evaluationThreshold?: number;
|
|
12
24
|
}
|
|
13
25
|
/**
|
|
14
26
|
* Pure function: joins detected flag keys against a platform's flag list,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cross-reference.d.ts","sourceRoot":"","sources":["../../src/providers/cross-reference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAElE,MAAM,WAAW,qBAAqB;IACpC;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"cross-reference.d.ts","sourceRoot":"","sources":["../../src/providers/cross-reference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAElE,MAAM,WAAW,qBAAqB;IACpC;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAC5B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,EACzC,aAAa,EAAE,YAAY,EAAE,EAC7B,mBAAmB,EAAE,MAAM,EAC3B,OAAO,GAAE,qBAA0B,GAClC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CA8H/B;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,EACnC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,GACpC,IAAI,CASN"}
|
|
@@ -88,6 +88,47 @@ export function crossReference(detectedFlags, platformFlags, platformDisplayName
|
|
|
88
88
|
description: `created in ${platformDisplayName} ${ageDays} days ago — past the ${options.thresholdDays}-day threshold`,
|
|
89
89
|
});
|
|
90
90
|
}
|
|
91
|
+
// Real evaluation counts beat every heuristic above when present.
|
|
92
|
+
// `evaluations30d === 0` is a hard signal: the platform itself
|
|
93
|
+
// confirms the code path is unused. Suppressed on permanent flags
|
|
94
|
+
// because the user explicitly opted into keeping the flag — same
|
|
95
|
+
// logic as too-old.
|
|
96
|
+
//
|
|
97
|
+
// `undefined` means the feature isn't available for this account
|
|
98
|
+
// (tier-gated / endpoint 404'd); `null` means available but no
|
|
99
|
+
// window data yet. Both fall through to no signal.
|
|
100
|
+
if (!platform.permanent && typeof platform.evaluations30d === 'number') {
|
|
101
|
+
if (platform.evaluations30d === 0) {
|
|
102
|
+
signals.push({
|
|
103
|
+
type: 'platform-zero-evaluations',
|
|
104
|
+
severity: 'error',
|
|
105
|
+
description: `0 evaluations in ${platformDisplayName} over the last 30 days — code path is unused`,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
const threshold = options.evaluationThreshold ?? 10;
|
|
110
|
+
if (platform.evaluations30d < threshold) {
|
|
111
|
+
signals.push({
|
|
112
|
+
type: 'platform-low-evaluations',
|
|
113
|
+
severity: 'warning',
|
|
114
|
+
description: `only ${platform.evaluations30d} evaluation${platform.evaluations30d === 1 ? '' : 's'} in ${platformDisplayName} over the last 30 days (below threshold ${threshold})`,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// platform-untouched-stale: the audit log confirmed no activity
|
|
120
|
+
// (toggles, edits, targeting changes) for this flag within the
|
|
121
|
+
// platform's lookback window. Unlike most signals, this is NOT
|
|
122
|
+
// suppressed for permanent flags — a kill switch untouched for
|
|
123
|
+
// 3 years should still get a periodic review even if the user
|
|
124
|
+
// intends to keep it permanent.
|
|
125
|
+
if (platform.lastTouched === null) {
|
|
126
|
+
signals.push({
|
|
127
|
+
type: 'platform-untouched-stale',
|
|
128
|
+
severity: 'warning',
|
|
129
|
+
description: `no activity in ${platformDisplayName} for 90+ days (audit log)`,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
91
132
|
if (signals.length > 0) {
|
|
92
133
|
out.set(key, signals);
|
|
93
134
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cross-reference.js","sourceRoot":"","sources":["../../src/providers/cross-reference.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cross-reference.js","sourceRoot":"","sources":["../../src/providers/cross-reference.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,6 +69,49 @@ export interface PlatformFlag {
|
|
|
69
69
|
* "7 days ago" or "9 months ago" before pulling the trigger.
|
|
70
70
|
*/
|
|
71
71
|
lastRequested?: Date | null;
|
|
72
|
+
/**
|
|
73
|
+
* Total evaluations recorded across all variations in the configured
|
|
74
|
+
* environment over the last 30 days. Distinct from `status` (which is
|
|
75
|
+
* LD's 7-day verdict) — gives a number we can compare against a
|
|
76
|
+
* threshold, and a stronger signal than the status alone.
|
|
77
|
+
*
|
|
78
|
+
* `0` → flag definitively unused over the window; emit
|
|
79
|
+
* `platform-zero-evaluations` (error severity — same as
|
|
80
|
+
* missing-in-platform: the code path can be removed).
|
|
81
|
+
* `< N` → flag rarely evaluated; emit `platform-low-evaluations`
|
|
82
|
+
* (warning). Threshold N is configurable per-platform.
|
|
83
|
+
* `>= N` → no signal — actively used.
|
|
84
|
+
*
|
|
85
|
+
* Set to `null` when the platform supports the field but couldn't
|
|
86
|
+
* resolve a count (e.g. flag just created — no window yet). Set to
|
|
87
|
+
* `undefined` when the platform's evaluation-counts feature isn't
|
|
88
|
+
* available at all (tier-gated, or feature off project-wide). The
|
|
89
|
+
* cross-reference layer treats `undefined` and `null` the same way:
|
|
90
|
+
* no signal emitted.
|
|
91
|
+
*/
|
|
92
|
+
evaluations30d?: number | null;
|
|
93
|
+
/**
|
|
94
|
+
* Timestamp of the most recent audit-log event for this flag within
|
|
95
|
+
* the configured window (default 90 days). Distinct from
|
|
96
|
+
* `lastModified` (which only tracks env-level edits visible in the
|
|
97
|
+
* flag-list response) — audit log captures EVERY change including
|
|
98
|
+
* toggles, targeting rule edits, prerequisite updates, and approval-
|
|
99
|
+
* workflow events.
|
|
100
|
+
*
|
|
101
|
+
* `Date` → most recent activity within the window
|
|
102
|
+
* `null` → confirmed NO activity in the window (audit log
|
|
103
|
+
* fetched successfully, this flag wasn't in it)
|
|
104
|
+
* `undefined` → audit log unavailable (tier-gated, 404, rate
|
|
105
|
+
* limit, page cap hit before window exhausted —
|
|
106
|
+
* we couldn't confirm)
|
|
107
|
+
*
|
|
108
|
+
* Cross-reference uses the null case to emit
|
|
109
|
+
* `platform-untouched-stale` — particularly valuable for permanent
|
|
110
|
+
* flags where age/usage signals are correctly suppressed but
|
|
111
|
+
* "haven't touched this kill switch in 3 years" is still worth
|
|
112
|
+
* surfacing.
|
|
113
|
+
*/
|
|
114
|
+
lastTouched?: Date | null;
|
|
72
115
|
}
|
|
73
116
|
/** Runtime client for a configured platform. Returned by PlatformDefinition.createClient. */
|
|
74
117
|
export interface PlatformClient {
|
|
@@ -116,8 +159,14 @@ export interface PlatformSignal {
|
|
|
116
159
|
* - `platform-launched` (error): LD's own verdict — flag has been
|
|
117
160
|
* serving a single variation consistently for the past 7 days.
|
|
118
161
|
* "Ready for removal" from LD's perspective.
|
|
162
|
+
* - `platform-zero-evaluations` (error): real runtime data — zero
|
|
163
|
+
* evaluations recorded in the last 30 days. Sourced from LD's
|
|
164
|
+
* evaluation analytics endpoint. Strongest possible stale signal
|
|
165
|
+
* because it's based on actual usage, not heuristics.
|
|
166
|
+
* - `platform-low-evaluations` (warning): evaluations below the
|
|
167
|
+
* configured threshold over the window. Default threshold: 10/30d.
|
|
119
168
|
*/
|
|
120
|
-
type: 'missing-in-platform' | 'archived-in-platform' | 'platform-permanent' | 'platform-too-old' | 'platform-inactive' | 'platform-launched';
|
|
169
|
+
type: 'missing-in-platform' | 'archived-in-platform' | 'platform-permanent' | 'platform-too-old' | 'platform-inactive' | 'platform-launched' | 'platform-zero-evaluations' | 'platform-low-evaluations' | 'platform-untouched-stale';
|
|
121
170
|
severity: 'error' | 'warning' | 'info';
|
|
122
171
|
description: string;
|
|
123
172
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/providers/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAElC,oEAAoE;AACpE,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,gFAAgF;IAChF,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,IAAI,GAAG,IAAI,CAAA;IACzB;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IAEvB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IAEf;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAA;IAEnD;;;;;OAKG;IACH,aAAa,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/providers/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAElC,oEAAoE;AACpE,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,gFAAgF;IAChF,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,IAAI,GAAG,IAAI,CAAA;IACzB;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IAEvB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IAEf;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAA;IAEnD;;;;;OAKG;IACH,aAAa,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IAE3B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAE9B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,WAAW,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CAC1B;AAED,6FAA6F;AAC7F,MAAM,WAAW,cAAc;IAC7B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAA;IACZ,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;CACpE;AAED,iFAAiF;AACjF,MAAM,WAAW,kBAAkB,CAAC,OAAO,GAAG,OAAO;IACnD,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,0EAA0E;IAC1E,eAAe,EAAE,MAAM,CAAA;IACvB,0DAA0D;IAC1D,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9B,uGAAuG;IACvG,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,cAAc,CAAA;CACjE;AAED,gGAAgG;AAChG,MAAM,WAAW,cAAc;IAC7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,IAAI,EACA,qBAAqB,GACrB,sBAAsB,GACtB,oBAAoB,GACpB,kBAAkB,GAClB,mBAAmB,GACnB,mBAAmB,GACnB,2BAA2B,GAC3B,0BAA0B,GAC1B,0BAA0B,CAAA;IAC9B,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;IACtC,WAAW,EAAE,MAAM,CAAA;CACpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/providers/launchdarkly/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/providers/launchdarkly/client.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAgCnD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,mBAAmB,EAC3B,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,YAAY,EAAE,CAAC,CAuHzB"}
|
|
@@ -1,7 +1,33 @@
|
|
|
1
|
-
import
|
|
1
|
+
import pLimit from 'p-limit';
|
|
2
|
+
import { AuditLogResponseSchema, EvaluationsResponseSchema, FlagsResponseSchema, FlagStatusesResponseSchema, MembersResponseSchema, } from './types.js';
|
|
2
3
|
import { LdApiError } from './errors.js';
|
|
3
4
|
const DEFAULT_API_BASE = 'https://app.launchdarkly.com';
|
|
4
5
|
const LD_API_VERSION = '20240415';
|
|
6
|
+
// Audit-log fetching parameters.
|
|
7
|
+
//
|
|
8
|
+
// AUDIT_LOG_WINDOW_DAYS controls the lookback window. A flag with NO
|
|
9
|
+
// audit entries in the window is considered "untouched" → emit the
|
|
10
|
+
// platform-untouched-stale signal. 90 days is the default — long
|
|
11
|
+
// enough that quarterly review cycles still mark genuinely-stale
|
|
12
|
+
// permanent flags, short enough that rarely-toggled but ACTIVE
|
|
13
|
+
// flags don't false-positive.
|
|
14
|
+
//
|
|
15
|
+
// AUDIT_LOG_MAX_PAGES caps pagination. LD's audit-log endpoint has a
|
|
16
|
+
// max page size of 20; 30 pages × 20 entries = 600-event budget per
|
|
17
|
+
// scan. For projects with more than 600 audit events in the window
|
|
18
|
+
// we hit the cap before exhausting the window, and the lastTouched
|
|
19
|
+
// field stays undefined for every flag — better than false
|
|
20
|
+
// positives on heavily-active projects.
|
|
21
|
+
const AUDIT_LOG_WINDOW_DAYS = 90;
|
|
22
|
+
const AUDIT_LOG_MAX_PAGES = 30;
|
|
23
|
+
const AUDIT_LOG_LIMIT = 20; // LD's hard ceiling per page
|
|
24
|
+
// Concurrency cap on the per-flag evaluation-counts fetch fan-out.
|
|
25
|
+
// LD's per-token rate limit is documented at "thousands of requests per
|
|
26
|
+
// minute"; 5 in-flight keeps us comfortably under any reasonable cap
|
|
27
|
+
// even on 200-flag projects. Higher = faster scans, more rate-limit
|
|
28
|
+
// risk. Kept private (not configurable) because tuning this should be
|
|
29
|
+
// a deliberate change visible in code review.
|
|
30
|
+
const EVALUATIONS_CONCURRENCY = 5;
|
|
5
31
|
/**
|
|
6
32
|
* Fetches every flag in `config.project` (active + archived), then enriches
|
|
7
33
|
* the result with platform-side signals from two auxiliary LD endpoints:
|
|
@@ -97,8 +123,95 @@ export async function fetchAllFlags(config, opts = {}) {
|
|
|
97
123
|
}
|
|
98
124
|
}
|
|
99
125
|
}
|
|
126
|
+
// Aux 3: 30-day evaluation counts per flag. Per-flag endpoint, so we
|
|
127
|
+
// fan out with a concurrency cap. The endpoint is tier-gated; the
|
|
128
|
+
// first 404/403/401 short-circuits the rest so we don't make N
|
|
129
|
+
// pointless requests on accounts that don't have this feature.
|
|
130
|
+
// Active flags only — archived flags have no evaluation activity by
|
|
131
|
+
// definition, and probing them wastes API calls.
|
|
132
|
+
await enrichWithEvaluations(out, config, apiBase, headers, fetchFn, opts.signal);
|
|
133
|
+
// Aux 4: per-flag last-touched timestamp from the audit log. Single
|
|
134
|
+
// paginated endpoint, scoped to the project+env, windowed to the
|
|
135
|
+
// last AUDIT_LOG_WINDOW_DAYS. Builds a Map<flagKey, lastEventDate>
|
|
136
|
+
// from up to AUDIT_LOG_MAX_PAGES of entries. Flags absent from the
|
|
137
|
+
// map after a successful fetch get `lastTouched: null` (confirmed
|
|
138
|
+
// untouched in the window); flags present get the latest event date.
|
|
139
|
+
// On failure / page-cap-hit / unavailable endpoint, lastTouched
|
|
140
|
+
// stays undefined for every flag.
|
|
141
|
+
const lastTouched = await fetchLastTouchedMap(config, apiBase, headers, fetchFn, opts.signal);
|
|
142
|
+
if (lastTouched !== null) {
|
|
143
|
+
for (const flag of out) {
|
|
144
|
+
if (flag.archived)
|
|
145
|
+
continue;
|
|
146
|
+
flag.lastTouched = lastTouched.get(flag.key) ?? null;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
100
149
|
return out;
|
|
101
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Fan-out fetch of 30-day evaluation counts per (active, non-archived)
|
|
153
|
+
* flag. Mutates the input PlatformFlag[] in place — sets
|
|
154
|
+
* `evaluations30d` to a number on success, leaves it undefined when
|
|
155
|
+
* the endpoint isn't available. The first request that returns 401 /
|
|
156
|
+
* 403 / 404 disables the feature for the rest of the batch (assumed
|
|
157
|
+
* to be tier-gated or feature-off project-wide).
|
|
158
|
+
*
|
|
159
|
+
* Network errors on individual flags are tolerated: that single flag's
|
|
160
|
+
* `evaluations30d` stays undefined and the rest of the scan continues.
|
|
161
|
+
* Cross-reference treats `undefined` as "no data, no signal".
|
|
162
|
+
*/
|
|
163
|
+
async function enrichWithEvaluations(flags, config, apiBase, headers, fetchFn, signal) {
|
|
164
|
+
const candidates = flags.filter((f) => !f.archived);
|
|
165
|
+
if (candidates.length === 0)
|
|
166
|
+
return;
|
|
167
|
+
let featureAvailable = true;
|
|
168
|
+
const limiter = pLimit(EVALUATIONS_CONCURRENCY);
|
|
169
|
+
await Promise.all(candidates.map((flag) => limiter(async () => {
|
|
170
|
+
if (!featureAvailable)
|
|
171
|
+
return;
|
|
172
|
+
try {
|
|
173
|
+
const url = new URL(`/api/v2/usage/evaluations/${encodeURIComponent(config.project)}/${encodeURIComponent(config.environment)}/${encodeURIComponent(flag.key)}`, apiBase);
|
|
174
|
+
const res = await fetchFn(url, { headers, signal });
|
|
175
|
+
if (res.status === 401 || res.status === 403 || res.status === 404) {
|
|
176
|
+
// Disable for the rest of the batch — assume tier-gated /
|
|
177
|
+
// feature off for this project. Leave already-set
|
|
178
|
+
// evaluations30d alone (no rollback).
|
|
179
|
+
featureAvailable = false;
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
if (!res.ok) {
|
|
183
|
+
// 5xx / 429 — transient. Skip this flag, keep the feature
|
|
184
|
+
// enabled for others.
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
const parsed = EvaluationsResponseSchema.parse(await res.json());
|
|
188
|
+
flag.evaluations30d = sumEvaluationSeries(parsed.series);
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
// Network error / JSON parse failure — same treatment as 5xx,
|
|
192
|
+
// skip this flag, keep going.
|
|
193
|
+
}
|
|
194
|
+
})));
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* The /usage/evaluations response is a time-series of variation-keyed
|
|
198
|
+
* counts: each series point is `{ time, "0": N, "1": M, ... }`. We
|
|
199
|
+
* don't care which variation served — only the total. Sum every
|
|
200
|
+
* numeric field on every series point.
|
|
201
|
+
*/
|
|
202
|
+
function sumEvaluationSeries(series) {
|
|
203
|
+
let total = 0;
|
|
204
|
+
for (const point of series) {
|
|
205
|
+
for (const [key, value] of Object.entries(point)) {
|
|
206
|
+
if (key === 'time')
|
|
207
|
+
continue;
|
|
208
|
+
if (typeof value === 'number' && Number.isFinite(value)) {
|
|
209
|
+
total += value;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return total;
|
|
214
|
+
}
|
|
102
215
|
function buildFirstPath(project, environment, archived = false) {
|
|
103
216
|
const params = new URLSearchParams({
|
|
104
217
|
env: environment,
|
|
@@ -181,4 +294,78 @@ async function fetchFlagStatuses(project, environment, apiBase, headers, fetchFn
|
|
|
181
294
|
/* v8 ignore stop */
|
|
182
295
|
}
|
|
183
296
|
}
|
|
297
|
+
/**
|
|
298
|
+
* Best-effort fetch of recent audit-log entries for the configured
|
|
299
|
+
* project + environment, scoped to flag events. Returns a Map keyed
|
|
300
|
+
* by flag key whose values are the most recent event timestamp within
|
|
301
|
+
* the lookback window for that flag.
|
|
302
|
+
*
|
|
303
|
+
* `null` return = couldn't fetch (endpoint unavailable, page cap hit
|
|
304
|
+
* before window exhausted, network error). In that case cross-reference
|
|
305
|
+
* skips the untouched-stale signal entirely — better than false
|
|
306
|
+
* positives on heavily-active projects.
|
|
307
|
+
*
|
|
308
|
+
* Pagination: LD's audit-log endpoint caps page size at 20 entries. We
|
|
309
|
+
* paginate up to AUDIT_LOG_MAX_PAGES (30) = 600-entry budget. Audit
|
|
310
|
+
* events older than (now - AUDIT_LOG_WINDOW_DAYS) are filtered out by
|
|
311
|
+
* the `after` query param.
|
|
312
|
+
*
|
|
313
|
+
* Flag-key extraction: each entry's `target.resources` array contains
|
|
314
|
+
* resource specifier strings like
|
|
315
|
+
* `proj/{proj}:env/{env}:flag/{flagKey}`. We extract the trailing
|
|
316
|
+
* flagKey segment.
|
|
317
|
+
*/
|
|
318
|
+
async function fetchLastTouchedMap(config, apiBase, headers, fetchFn, signal) {
|
|
319
|
+
const lastTouched = new Map();
|
|
320
|
+
const after = Date.now() - AUDIT_LOG_WINDOW_DAYS * 86_400_000;
|
|
321
|
+
const spec = `proj/${config.project}:env/${config.environment}:flag/*`;
|
|
322
|
+
const flagKeyPattern = /:flag\/([^:]+)$/;
|
|
323
|
+
const params = new URLSearchParams({
|
|
324
|
+
spec,
|
|
325
|
+
after: String(after),
|
|
326
|
+
limit: String(AUDIT_LOG_LIMIT),
|
|
327
|
+
});
|
|
328
|
+
let path = `/api/v2/auditlog?${params.toString()}`;
|
|
329
|
+
let pages = 0;
|
|
330
|
+
while (path && pages < AUDIT_LOG_MAX_PAGES) {
|
|
331
|
+
pages++;
|
|
332
|
+
try {
|
|
333
|
+
const res = await fetchFn(new URL(path, apiBase), { headers, signal });
|
|
334
|
+
if (res.status === 401 || res.status === 403 || res.status === 404) {
|
|
335
|
+
return null;
|
|
336
|
+
}
|
|
337
|
+
if (!res.ok)
|
|
338
|
+
return null;
|
|
339
|
+
const parsed = AuditLogResponseSchema.parse(await res.json());
|
|
340
|
+
for (const item of parsed.items) {
|
|
341
|
+
const resources = item.target?.resources ?? [];
|
|
342
|
+
for (const r of resources) {
|
|
343
|
+
const m = flagKeyPattern.exec(r);
|
|
344
|
+
if (!m)
|
|
345
|
+
continue;
|
|
346
|
+
const flagKey = m[1];
|
|
347
|
+
const date = new Date(item.date);
|
|
348
|
+
const existing = lastTouched.get(flagKey);
|
|
349
|
+
if (!existing || date > existing) {
|
|
350
|
+
lastTouched.set(flagKey, date);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
path = parsed._links?.next?.href;
|
|
355
|
+
}
|
|
356
|
+
catch {
|
|
357
|
+
/* v8 ignore start — defensive catch for malformed JSON / schema
|
|
358
|
+
drift; not exercised by current fixtures. */
|
|
359
|
+
return null;
|
|
360
|
+
/* v8 ignore stop */
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
// Hit the page cap before the API said "no more pages" — we can't
|
|
364
|
+
// be sure we've seen every flag's recent activity. Return null so
|
|
365
|
+
// the caller treats every flag as "lastTouched unknown" rather than
|
|
366
|
+
// emitting false positives.
|
|
367
|
+
if (path)
|
|
368
|
+
return null;
|
|
369
|
+
return lastTouched;
|
|
370
|
+
}
|
|
184
371
|
//# sourceMappingURL=client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/providers/launchdarkly/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/providers/launchdarkly/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -378,6 +378,178 @@ export declare const FlagStatusesResponseSchema: z.ZodObject<{
|
|
|
378
378
|
_links: z.ZodOptional<z.ZodUnknown>;
|
|
379
379
|
}, z.ZodTypeAny, "passthrough">>;
|
|
380
380
|
export type FlagStatusesResponse = z.infer<typeof FlagStatusesResponseSchema>;
|
|
381
|
+
export declare const EvaluationsResponseSchema: z.ZodObject<{
|
|
382
|
+
series: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
383
|
+
time: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
|
|
384
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
385
|
+
time: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
|
|
386
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
387
|
+
time: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
|
|
388
|
+
}, z.ZodTypeAny, "passthrough">>, "many">>>;
|
|
389
|
+
metadata: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
|
|
390
|
+
_links: z.ZodOptional<z.ZodUnknown>;
|
|
391
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
392
|
+
series: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
393
|
+
time: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
|
|
394
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
395
|
+
time: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
|
|
396
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
397
|
+
time: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
|
|
398
|
+
}, z.ZodTypeAny, "passthrough">>, "many">>>;
|
|
399
|
+
metadata: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
|
|
400
|
+
_links: z.ZodOptional<z.ZodUnknown>;
|
|
401
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
402
|
+
series: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
403
|
+
time: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
|
|
404
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
405
|
+
time: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
|
|
406
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
407
|
+
time: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
|
|
408
|
+
}, z.ZodTypeAny, "passthrough">>, "many">>>;
|
|
409
|
+
metadata: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
|
|
410
|
+
_links: z.ZodOptional<z.ZodUnknown>;
|
|
411
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
412
|
+
export type EvaluationsResponse = z.infer<typeof EvaluationsResponseSchema>;
|
|
413
|
+
export declare const AuditLogResponseSchema: z.ZodObject<{
|
|
414
|
+
items: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
415
|
+
date: z.ZodNumber;
|
|
416
|
+
target: z.ZodOptional<z.ZodObject<{
|
|
417
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
418
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
419
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
420
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
421
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
422
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
423
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
424
|
+
date: z.ZodNumber;
|
|
425
|
+
target: z.ZodOptional<z.ZodObject<{
|
|
426
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
427
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
428
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
429
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
430
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
431
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
432
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
433
|
+
date: z.ZodNumber;
|
|
434
|
+
target: z.ZodOptional<z.ZodObject<{
|
|
435
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
436
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
437
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
438
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
439
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
440
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
441
|
+
}, z.ZodTypeAny, "passthrough">>, "many">>>;
|
|
442
|
+
_links: z.ZodOptional<z.ZodObject<{
|
|
443
|
+
next: z.ZodOptional<z.ZodObject<{
|
|
444
|
+
href: z.ZodString;
|
|
445
|
+
}, "strip", z.ZodTypeAny, {
|
|
446
|
+
href: string;
|
|
447
|
+
}, {
|
|
448
|
+
href: string;
|
|
449
|
+
}>>;
|
|
450
|
+
}, "strip", z.ZodTypeAny, {
|
|
451
|
+
next?: {
|
|
452
|
+
href: string;
|
|
453
|
+
} | undefined;
|
|
454
|
+
}, {
|
|
455
|
+
next?: {
|
|
456
|
+
href: string;
|
|
457
|
+
} | undefined;
|
|
458
|
+
}>>;
|
|
459
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
460
|
+
items: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
461
|
+
date: z.ZodNumber;
|
|
462
|
+
target: z.ZodOptional<z.ZodObject<{
|
|
463
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
464
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
465
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
466
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
467
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
468
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
469
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
470
|
+
date: z.ZodNumber;
|
|
471
|
+
target: z.ZodOptional<z.ZodObject<{
|
|
472
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
473
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
474
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
475
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
476
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
477
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
478
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
479
|
+
date: z.ZodNumber;
|
|
480
|
+
target: z.ZodOptional<z.ZodObject<{
|
|
481
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
482
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
483
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
484
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
485
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
486
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
487
|
+
}, z.ZodTypeAny, "passthrough">>, "many">>>;
|
|
488
|
+
_links: z.ZodOptional<z.ZodObject<{
|
|
489
|
+
next: z.ZodOptional<z.ZodObject<{
|
|
490
|
+
href: z.ZodString;
|
|
491
|
+
}, "strip", z.ZodTypeAny, {
|
|
492
|
+
href: string;
|
|
493
|
+
}, {
|
|
494
|
+
href: string;
|
|
495
|
+
}>>;
|
|
496
|
+
}, "strip", z.ZodTypeAny, {
|
|
497
|
+
next?: {
|
|
498
|
+
href: string;
|
|
499
|
+
} | undefined;
|
|
500
|
+
}, {
|
|
501
|
+
next?: {
|
|
502
|
+
href: string;
|
|
503
|
+
} | undefined;
|
|
504
|
+
}>>;
|
|
505
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
506
|
+
items: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
507
|
+
date: z.ZodNumber;
|
|
508
|
+
target: z.ZodOptional<z.ZodObject<{
|
|
509
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
510
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
511
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
512
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
513
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
514
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
515
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
516
|
+
date: z.ZodNumber;
|
|
517
|
+
target: z.ZodOptional<z.ZodObject<{
|
|
518
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
519
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
520
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
521
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
522
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
523
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
524
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
525
|
+
date: z.ZodNumber;
|
|
526
|
+
target: z.ZodOptional<z.ZodObject<{
|
|
527
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
528
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
529
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
530
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
531
|
+
resources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
532
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
533
|
+
}, z.ZodTypeAny, "passthrough">>, "many">>>;
|
|
534
|
+
_links: z.ZodOptional<z.ZodObject<{
|
|
535
|
+
next: z.ZodOptional<z.ZodObject<{
|
|
536
|
+
href: z.ZodString;
|
|
537
|
+
}, "strip", z.ZodTypeAny, {
|
|
538
|
+
href: string;
|
|
539
|
+
}, {
|
|
540
|
+
href: string;
|
|
541
|
+
}>>;
|
|
542
|
+
}, "strip", z.ZodTypeAny, {
|
|
543
|
+
next?: {
|
|
544
|
+
href: string;
|
|
545
|
+
} | undefined;
|
|
546
|
+
}, {
|
|
547
|
+
next?: {
|
|
548
|
+
href: string;
|
|
549
|
+
} | undefined;
|
|
550
|
+
}>>;
|
|
551
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
552
|
+
export type AuditLogResponse = z.infer<typeof AuditLogResponseSchema>;
|
|
381
553
|
export declare const MembersResponseSchema: z.ZodObject<{
|
|
382
554
|
items: z.ZodArray<z.ZodObject<{
|
|
383
555
|
_id: z.ZodString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/launchdarkly/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAiCvB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAMhB,CAAA;AAEhB,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAuB/D,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAGvB,CAAA;AAEhB,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/launchdarkly/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAiCvB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAMhB,CAAA;AAEhB,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAuB/D,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAGvB,CAAA;AAEhB,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAuB7E,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAMtB,CAAA;AAEhB,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AA2B3E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCASnB,CAAA;AAEhB,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAWrE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAIlB,CAAA;AAEhB,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA"}
|
|
@@ -58,6 +58,65 @@ export const FlagStatusesResponseSchema = z.object({
|
|
|
58
58
|
items: z.array(FlagStatusItemSchema),
|
|
59
59
|
_links: z.unknown().optional(),
|
|
60
60
|
}).passthrough();
|
|
61
|
+
// ── Evaluations (real runtime evaluation counts per flag per env) ──────────
|
|
62
|
+
//
|
|
63
|
+
// Endpoint: GET /api/v2/usage/evaluations/{project}/{env}/{flagKey}
|
|
64
|
+
// Returns a time-series. Each series point has a `time` (epoch ms) and one
|
|
65
|
+
// numeric field per variation, KEYED BY VARIATION INDEX AS A STRING
|
|
66
|
+
// (e.g. "0": 1234, "1": 567). The number of keys depends on the flag's
|
|
67
|
+
// variation count (boolean = 2; multivariate = N).
|
|
68
|
+
//
|
|
69
|
+
// We don't care about the per-variation split for the staleness signal —
|
|
70
|
+
// we only need the TOTAL across all variations. The schema below
|
|
71
|
+
// passthrough()s the variation keys and we sum them at the call site.
|
|
72
|
+
const EvaluationSeriesPointSchema = z
|
|
73
|
+
.object({
|
|
74
|
+
// ISO 8601 timestamp string per LD docs; we parse but don't typecheck
|
|
75
|
+
// the format because LD has shipped it as both string and numeric in
|
|
76
|
+
// the past — passthrough() keeps us tolerant.
|
|
77
|
+
time: z.union([z.string(), z.number()]).optional(),
|
|
78
|
+
})
|
|
79
|
+
.passthrough();
|
|
80
|
+
export const EvaluationsResponseSchema = z
|
|
81
|
+
.object({
|
|
82
|
+
series: z.array(EvaluationSeriesPointSchema).optional().default([]),
|
|
83
|
+
metadata: z.array(z.unknown()).optional(),
|
|
84
|
+
_links: z.unknown().optional(),
|
|
85
|
+
})
|
|
86
|
+
.passthrough();
|
|
87
|
+
// ── Audit log (per-flag last-touched timestamp) ─────────────────────────────
|
|
88
|
+
//
|
|
89
|
+
// Endpoint: GET /api/v2/auditlog
|
|
90
|
+
// ?spec=proj/{proj}:env/{env}:flag/* → filter to flag events in a project+env
|
|
91
|
+
// ?after=<epoch-ms> → window start
|
|
92
|
+
// ?limit=20 → max page size (per LD's docs)
|
|
93
|
+
//
|
|
94
|
+
// Response.items[].target.resources is an array of resource specifier
|
|
95
|
+
// strings shaped 'proj/{proj}:env/{env}:flag/{flagKey}' — we extract the
|
|
96
|
+
// flagKey from the trailing segment.
|
|
97
|
+
//
|
|
98
|
+
// .date is epoch milliseconds.
|
|
99
|
+
const AuditLogEntrySchema = z
|
|
100
|
+
.object({
|
|
101
|
+
date: z.number(),
|
|
102
|
+
target: z
|
|
103
|
+
.object({
|
|
104
|
+
resources: z.array(z.string()).optional().default([]),
|
|
105
|
+
})
|
|
106
|
+
.passthrough()
|
|
107
|
+
.optional(),
|
|
108
|
+
})
|
|
109
|
+
.passthrough();
|
|
110
|
+
export const AuditLogResponseSchema = z
|
|
111
|
+
.object({
|
|
112
|
+
items: z.array(AuditLogEntrySchema).optional().default([]),
|
|
113
|
+
_links: z
|
|
114
|
+
.object({
|
|
115
|
+
next: z.object({ href: z.string() }).optional(),
|
|
116
|
+
})
|
|
117
|
+
.optional(),
|
|
118
|
+
})
|
|
119
|
+
.passthrough();
|
|
61
120
|
// ── Members (P3: maintainer name resolution) ────────────────────────────────
|
|
62
121
|
const MemberItemSchema = z.object({
|
|
63
122
|
_id: z.string(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/providers/launchdarkly/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/providers/launchdarkly/types.ts"],"names":[],"mappings":"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"}
|
package/dist/staleness.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type FeatureFlag } from './detection/feature-flag.js';
|
|
2
2
|
export interface StalenessSignal {
|
|
3
|
-
type: 'age' | 'hardcoded' | 'low-usage' | 'missing-in-platform' | 'archived-in-platform' | 'platform-too-old' | 'platform-inactive' | 'platform-launched';
|
|
3
|
+
type: 'age' | 'hardcoded' | 'low-usage' | 'test-only-references' | 'missing-in-platform' | 'archived-in-platform' | 'platform-too-old' | 'platform-inactive' | 'platform-launched' | 'platform-zero-evaluations' | 'platform-low-evaluations' | 'platform-untouched-stale';
|
|
4
4
|
severity: 'error' | 'warning';
|
|
5
5
|
description: string;
|
|
6
6
|
}
|
package/dist/staleness.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"staleness.d.ts","sourceRoot":"","sources":["../src/staleness.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAI9D,MAAM,WAAW,eAAe;IAK9B,IAAI,EACA,KAAK,GACL,WAAW,GACX,WAAW,GACX,qBAAqB,GACrB,sBAAsB,GACtB,kBAAkB,GAClB,mBAAmB,GACnB,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"staleness.d.ts","sourceRoot":"","sources":["../src/staleness.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAI9D,MAAM,WAAW,eAAe;IAK9B,IAAI,EACA,KAAK,GACL,WAAW,GACX,WAAW,GACX,sBAAsB,GACtB,qBAAqB,GACrB,sBAAsB,GACtB,kBAAkB,GAClB,mBAAmB,GACnB,mBAAmB,GACnB,2BAA2B,GAC3B,0BAA0B,GAC1B,0BAA0B,CAAA;IAC9B,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7B,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,eAAe,EAAE,CAAA;IAC1B,+CAA+C;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;IAEtC;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,sEAAsE;IACtE,cAAc,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAA;CAC5D;AAED,MAAM,WAAW,gBAAgB;IAC/B,oEAAoE;IACpE,aAAa,EAAE,MAAM,CAAA;IACrB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAA;IAChB,kEAAkE;IAClE,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,0BAA0B,EAAE,cAAc,EAAE,CAAC,CAAA;IAClF;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,GAAG,CACpB,MAAM,EACN;QAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAA;KAAE,CAC9F,CAAA;CACF;AAgOD;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,EACjC,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,SAAS,EAAE,CAAC,CAmJtB"}
|
package/dist/staleness.js
CHANGED
|
@@ -138,6 +138,63 @@ function checkLowUsageSignal(flagName, occurrences) {
|
|
|
138
138
|
description: `Flag "${flagName}" only appears in 1 file — may have been fully rolled out`,
|
|
139
139
|
};
|
|
140
140
|
}
|
|
141
|
+
/**
|
|
142
|
+
* Patterns that identify a path as a TEST file across the languages
|
|
143
|
+
* FlagShark detects flags in. The patterns are deliberately tight —
|
|
144
|
+
* we'd rather miss a test file than misclassify a production file as
|
|
145
|
+
* a test (which would suppress a real staleness verdict).
|
|
146
|
+
*
|
|
147
|
+
* Coverage:
|
|
148
|
+
* - `.test.<ext>` and `.spec.<ext>` (JS/TS, common in the JS ecosystem)
|
|
149
|
+
* - `_test.go` (Go convention)
|
|
150
|
+
* - `test_<name>.py` (Python pytest convention)
|
|
151
|
+
* - `<Name>Test.java` / `<Name>Tests.java` (Java JUnit convention)
|
|
152
|
+
* - Anything inside `__tests__/`, `__mocks__/`, `/test/`, `/tests/`,
|
|
153
|
+
* or `/spec/` directories
|
|
154
|
+
*
|
|
155
|
+
* Not covered (false negative is the safer failure mode here): unusual
|
|
156
|
+
* test-naming conventions like Ruby `*_spec.rb` (different path conventions
|
|
157
|
+
* across Ruby projects), or single-file scripts that happen to be tests.
|
|
158
|
+
*/
|
|
159
|
+
const TEST_FILE_PATTERNS = [
|
|
160
|
+
/[._-]test\.[jt]sx?$/i, // foo.test.ts, foo-test.ts, foo_test.ts
|
|
161
|
+
/[._-]spec\.[jt]sx?$/i, // foo.spec.ts
|
|
162
|
+
/_test\.go$/, // Go: foo_test.go
|
|
163
|
+
/(^|\/)test_[^/]+\.py$/i, // Python: test_foo.py
|
|
164
|
+
/(^|\/)[A-Z][a-zA-Z0-9]*Tests?\.java$/, // Java: FooTest.java / FooTests.java
|
|
165
|
+
/(^|\/)__(tests|mocks)__\//, // __tests__/ / __mocks__/
|
|
166
|
+
/(^|\/)(test|tests|spec)\//, // /test/, /tests/, /spec/
|
|
167
|
+
];
|
|
168
|
+
function isTestFile(filePath) {
|
|
169
|
+
return TEST_FILE_PATTERNS.some((p) => p.test(filePath));
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Check whether ALL references for a flag are in test/spec files. When
|
|
173
|
+
* yes, the flag is unlikely to be a real production toggle — most often
|
|
174
|
+
* it's an SDK-integration test fixture, a prototype that was never
|
|
175
|
+
* deployed, or a leftover from an experiment. Emit a primary stale
|
|
176
|
+
* signal so the user knows.
|
|
177
|
+
*
|
|
178
|
+
* Deliberately requires EVERY reference to be in a test file, not "any".
|
|
179
|
+
* A flag with both test and production references is real production
|
|
180
|
+
* code; this signal is for the all-test-files case only.
|
|
181
|
+
*/
|
|
182
|
+
function checkTestOnlyReferencesSignal(flagName, occurrences) {
|
|
183
|
+
// Defensive guard. The detection pipeline only produces entries in
|
|
184
|
+
// the flags map when at least one occurrence exists, so this branch
|
|
185
|
+
// is unreachable from a real scan; we keep it so the function is
|
|
186
|
+
// safe to call independently from tests or future code paths.
|
|
187
|
+
/* v8 ignore next */
|
|
188
|
+
if (occurrences.length === 0)
|
|
189
|
+
return null;
|
|
190
|
+
if (!occurrences.every((o) => isTestFile(o.filePath)))
|
|
191
|
+
return null;
|
|
192
|
+
return {
|
|
193
|
+
type: 'test-only-references',
|
|
194
|
+
severity: 'warning',
|
|
195
|
+
description: `Flag "${flagName}" is referenced only in test/spec files — likely a forgotten test fixture or never-deployed prototype`,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
141
198
|
// ── Main entry point ───────────────────────────────────────────────
|
|
142
199
|
/**
|
|
143
200
|
* Analyze a set of detected feature flags for staleness signals.
|
|
@@ -166,8 +223,9 @@ export async function analyzeStaleness(flags, options) {
|
|
|
166
223
|
// ── 3. Evaluate signals for every flag occurrence ──
|
|
167
224
|
const staleFlags = [];
|
|
168
225
|
for (const [flagName, occurrences] of flags) {
|
|
169
|
-
// Low-usage
|
|
226
|
+
// Low-usage + test-only are per-flag-name (not per-occurrence).
|
|
170
227
|
const lowUsageSignal = checkLowUsageSignal(flagName, occurrences);
|
|
228
|
+
const testOnlySignal = checkTestOnlyReferencesSignal(flagName, occurrences);
|
|
171
229
|
// Pre-check: is this flag marked permanent by ANY platform? The
|
|
172
230
|
// `platform-permanent` cross-reference signal is a CONTROL marker,
|
|
173
231
|
// not a stale signal — it tells us to suppress age + low-usage
|
|
@@ -206,6 +264,14 @@ export async function analyzeStaleness(flags, options) {
|
|
|
206
264
|
if (lowUsageSignal && !isPermanent) {
|
|
207
265
|
signals.push(lowUsageSignal);
|
|
208
266
|
}
|
|
267
|
+
// Test-only references signal. Unlike low-usage, this DOES make
|
|
268
|
+
// a flag stale on its own — production code that's referenced
|
|
269
|
+
// only from test files is genuinely dead from the runtime's
|
|
270
|
+
// perspective. Suppressed for permanent flags (a kill switch
|
|
271
|
+
// intentionally exercised only by tests is a valid setup).
|
|
272
|
+
if (testOnlySignal && !isPermanent) {
|
|
273
|
+
signals.push(testOnlySignal);
|
|
274
|
+
}
|
|
209
275
|
// Hardcoded signal (v2 placeholder — always null for regex v1)
|
|
210
276
|
// checkHardcodedSignal returns null unconditionally; kept for structural symmetry
|
|
211
277
|
// with the other signal detectors. No branch emitted here.
|
|
@@ -229,8 +295,17 @@ export async function analyzeStaleness(flags, options) {
|
|
|
229
295
|
});
|
|
230
296
|
}
|
|
231
297
|
}
|
|
232
|
-
//
|
|
233
|
-
|
|
298
|
+
// A flag is stale only if it has at least one PRIMARY signal —
|
|
299
|
+
// anything other than `low-usage`. The single-file/low-usage
|
|
300
|
+
// signal is contributing context, not a stale verdict on its own:
|
|
301
|
+
// plenty of legitimate flags ARE single-file (small isolated
|
|
302
|
+
// features, kill switches, A/B toggles for one screen) and
|
|
303
|
+
// surfacing them as stale floods the output with false positives.
|
|
304
|
+
// When a flag IS stale for another reason, low-usage stays in
|
|
305
|
+
// the signals list because "this is single-file → small cleanup
|
|
306
|
+
// scope" is useful diagnostic for the reviewer.
|
|
307
|
+
const hasPrimarySignal = signals.some((s) => s.type !== 'low-usage');
|
|
308
|
+
if (hasPrimarySignal) {
|
|
234
309
|
const stale = {
|
|
235
310
|
name: flag.name,
|
|
236
311
|
filePath: flag.filePath,
|
package/dist/staleness.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"staleness.js","sourceRoot":"","sources":["../src/staleness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"staleness.js","sourceRoot":"","sources":["../src/staleness.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flagshark/core",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Detection engine for FlagShark — finds feature flag references across 13 languages.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
"generate:queries": "node scripts/generate-inline-queries.mjs",
|
|
26
26
|
"test": "vitest run",
|
|
27
27
|
"test:coverage": "vitest run --coverage",
|
|
28
|
+
"test:live": "vitest run --config vitest.live.config.ts",
|
|
28
29
|
"typecheck": "tsc --noEmit"
|
|
29
30
|
},
|
|
30
31
|
"dependencies": {
|