@qcobro/common 1.16.0 → 1.19.1
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/bin/engineEval.d.ts +0 -6
- package/dist/bin/engineEval.d.ts.map +1 -1
- package/dist/bin/engineEval.js +1 -24
- package/dist/bin/engineEval.js.map +1 -1
- package/dist/bin/listUsers.d.ts +70 -0
- package/dist/bin/listUsers.d.ts.map +1 -0
- package/dist/bin/listUsers.js +171 -0
- package/dist/bin/listUsers.js.map +1 -0
- package/dist/bin/tableFormat.d.ts +8 -0
- package/dist/bin/tableFormat.d.ts.map +1 -0
- package/dist/bin/tableFormat.js +26 -0
- package/dist/bin/tableFormat.js.map +1 -0
- package/package.json +5 -2
package/dist/bin/engineEval.d.ts
CHANGED
|
@@ -46,12 +46,6 @@ export declare function resolveCredentials(opts: Pick<CliOptions, "accessKeyId"
|
|
|
46
46
|
};
|
|
47
47
|
/** Builds only the threshold overrides the operator actually passed. */
|
|
48
48
|
export declare function buildThresholdOverrides(opts: Pick<CliOptions, "latencyP95" | "maxErrorRate" | "livenessTicks">): Partial<EvaluationParameters["thresholds"]>;
|
|
49
|
-
/**
|
|
50
|
-
* Renders rows as aligned columns: each column as wide as its widest cell,
|
|
51
|
-
* numeric-looking cells right-aligned, two spaces between columns. Width is
|
|
52
|
-
* computed from the data, so alignment holds for any campaign name or count.
|
|
53
|
-
*/
|
|
54
|
-
export declare function alignColumns(rows: string[][], indent?: string): string[];
|
|
55
49
|
/** Renders the scorecard as a plain-ASCII, human-readable summary. */
|
|
56
50
|
export declare function formatScorecard(scorecard: Scorecard, ctx: {
|
|
57
51
|
url: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engineEval.d.ts","sourceRoot":"","sources":["../../src/bin/engineEval.ts"],"names":[],"mappings":";AAKA,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACf,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"engineEval.d.ts","sourceRoot":"","sources":["../../src/bin/engineEval.ts"],"names":[],"mappings":";AAKA,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACf,MAAM,4BAA4B,CAAC;AAIpC;;;;;;;;;GASG;AAEH,eAAO,MAAM,WAAW,2BAA2B,CAAC;AAEpD,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACf;AAED,eAAO,MAAM,KAAK,opCAoBjB,CAAC;AAEF,2EAA2E;AAC3E,qBAAa,QAAS,SAAQ,KAAK;CAAG;AAwBtC,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAmBvD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,EAAE,EAAE,MAAM,GAAG,SAAS,EACtB,GAAG,EAAE,IAAI,GACR;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,CAMhC;AAED,mFAAmF;AACnF,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,aAAa,GAAG,iBAAiB,CAAC,EACzD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GACtC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAUlD;AAED,wEAAwE;AACxE,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,GAAG,cAAc,GAAG,eAAe,CAAC,GACtE,OAAO,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAM7C;AA6CD,sEAAsE;AACtE,wBAAgB,eAAe,CAC7B,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/C,MAAM,CA4ER;AAED;;;;GAIG;AACH,wBAAsB,IAAI,CACxB,IAAI,GAAE,MAAM,EAA0B,EACtC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EACrD,GAAG,GAAE,IAAiB,EACtB,MAAM,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAqC,EAC5D,MAAM,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAqC,GAC3D,OAAO,CAAC,MAAM,CAAC,CA8CjB"}
|
package/dist/bin/engineEval.js
CHANGED
|
@@ -4,6 +4,7 @@ import { parseArgs } from "node:util";
|
|
|
4
4
|
import { pathToFileURL } from "node:url";
|
|
5
5
|
import { evaluate } from "../evaluation/evaluate.js";
|
|
6
6
|
import { evaluationParametersSchema } from "../evaluation/scorecard.js";
|
|
7
|
+
import { alignColumns } from "./tableFormat.js";
|
|
7
8
|
/**
|
|
8
9
|
* `engine-eval` — the npx-runnable judge client (engine-scorecard capability,
|
|
9
10
|
* requirement "A deployment can be evaluated with npx"). Fetches the flight-
|
|
@@ -144,30 +145,6 @@ async function fetchEvents(url, range, accessKeyId, accessKeySecret) {
|
|
|
144
145
|
}
|
|
145
146
|
return (await res.json());
|
|
146
147
|
}
|
|
147
|
-
/**
|
|
148
|
-
* Renders rows as aligned columns: each column as wide as its widest cell,
|
|
149
|
-
* numeric-looking cells right-aligned, two spaces between columns. Width is
|
|
150
|
-
* computed from the data, so alignment holds for any campaign name or count.
|
|
151
|
-
*/
|
|
152
|
-
export function alignColumns(rows, indent = " ") {
|
|
153
|
-
const widths = [];
|
|
154
|
-
for (const row of rows) {
|
|
155
|
-
row.forEach((cell, i) => {
|
|
156
|
-
widths[i] = Math.max(widths[i] ?? 0, cell.length);
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
const numeric = /^[\d,.%]+$/;
|
|
160
|
-
return rows.map((row) => (indent +
|
|
161
|
-
row
|
|
162
|
-
.map((cell, i) => {
|
|
163
|
-
const w = widths[i];
|
|
164
|
-
// Last column flows free; numbers right-align under their header.
|
|
165
|
-
if (i === row.length - 1)
|
|
166
|
-
return cell;
|
|
167
|
-
return numeric.test(cell) ? cell.padStart(w) : cell.padEnd(w);
|
|
168
|
-
})
|
|
169
|
-
.join(" ")).trimEnd());
|
|
170
|
-
}
|
|
171
148
|
/** Renders the scorecard as a plain-ASCII, human-readable summary. */
|
|
172
149
|
export function formatScorecard(scorecard, ctx) {
|
|
173
150
|
const lines = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engineEval.js","sourceRoot":"","sources":["../../src/bin/engineEval.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EACL,0BAA0B,EAG3B,MAAM,4BAA4B,CAAC;AAGpC;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAepD,MAAM,CAAC,MAAM,KAAK,GAAG;;;;;;;oEAO+C,WAAW;;;;;;;;;;;;;CAa9E,CAAC;AAEF,2EAA2E;AAC3E,MAAM,OAAO,QAAS,SAAQ,KAAK;CAAG;AAEtC,MAAM,WAAW,GAAG;IAClB,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACvB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACxB,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACtB,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnC,mBAAmB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACvC,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACjC,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACpC,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACpC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;IACzC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;CACjC,CAAC;AAEX,SAAS,eAAe,CAAC,IAAY,EAAE,GAAuB;IAC5D,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,QAAQ,CAAC,KAAK,IAAI,2BAA2B,GAAG,GAAG,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,YAAY,CAAC,IAAc;IACzC,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC1F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,QAAQ,CAAC,sBAAsB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,WAAW;QAC9B,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,WAAW,EAAE,MAAM,CAAC,eAAe,CAAC;QACpC,eAAe,EAAE,MAAM,CAAC,mBAAmB,CAAC;QAC5C,UAAU,EAAE,eAAe,CAAC,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;QACjE,YAAY,EAAE,eAAe,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACzE,aAAa,EAAE,eAAe,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC1E,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,KAAK;QAC1B,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,KAAK;KAC3B,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAwB,EACxB,EAAsB,EACtB,GAAS;IAET,IAAI,IAAI,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;QAC3C,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7F,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;IACtE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACtB,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,kBAAkB,CAChC,IAAyD,EACzD,GAAuC;IAEvC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,oBAAoB,CAAC;IACjE,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,GAAG,CAAC,wBAAwB,CAAC;IAC7E,IAAI,CAAC,WAAW,IAAI,CAAC,eAAe,EAAE,CAAC;QACrC,MAAM,IAAI,QAAQ,CAChB,+EAA+E;YAC7E,+CAA+C,CAClD,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;AAC1C,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,uBAAuB,CACrC,IAAuE;IAEvE,MAAM,UAAU,GAAgD,EAAE,CAAC;IACnE,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;QAAE,UAAU,CAAC,oBAAoB,GAAG,IAAI,CAAC,UAAU,CAAC;IACrF,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;QAAE,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IACjF,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;QAAE,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;IACpF,OAAO,UAAU,CAAC;AACpB,CAAC;AAYD,KAAK,UAAU,WAAW,CACxB,GAAW,EACX,KAAqC,EACrC,WAAmB,EACnB,eAAuB;IAEvB,IAAI,QAAa,CAAC;IAClB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,QAAQ,CAAC,kBAAkB,GAAG,GAAG,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,KAAK,CAAC,IAAI;QAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9D,IAAI,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IAExD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,IAAI,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACjF,IAAI,GAAa,CAAC;IAClB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,SAAS,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,QAAQ,CAChB,mBAAmB,QAAQ,CAAC,MAAM,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC1F,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,QAAQ,CAAC,oDAAoD,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,QAAQ,CAAC,mBAAmB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAmB,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAAgB,EAAE,MAAM,GAAG,IAAI;IAC1D,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACtB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC;IAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACtB,CACE,MAAM;QACN,GAAG;aACA,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACf,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACpB,kEAAkE;YAClE,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;YACtC,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CACd,CAAC,OAAO,EAAE,CACZ,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,eAAe,CAC7B,SAAoB,EACpB,GAAgD;IAEhD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,aAAa,OAAO,GAAG,CAAC,EAAE,IAAI,aAAa,EAAE,CAAC,CAAC;IACjF,KAAK,CAAC,IAAI,CACR,kBAAkB,SAAS,CAAC,MAAM,CAAC,MAAM,UAAU,SAAS,CAAC,MAAM,CAAC,KAAK,GAAG;QAC1E,aAAa,SAAS,CAAC,MAAM,CAAC,SAAS,uBAAuB,SAAS,CAAC,MAAM,CAAC,kBAAkB,EAAE,CACtG,CAAC;IACF,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,WAAW,SAAS,CAAC,IAAI,CAAC,MAAM,sCAAsC,CAAC,CAAC;QACnF,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,YAAY,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzB,KAAK,CAAC,IAAI,CACR,GAAG,YAAY,CACb,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;QAChC,IAAI,GAAG,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG;QAC/C,GAAG,CAAC,EAAE;QACN,GAAG,CAAC,IAAI;QACR,GAAG,CAAC,KAAK;QACT,GAAG,CAAC,MAAM,IAAI,EAAE;KACjB,CAAC,CACH,CACF,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1B,2EAA2E;IAC3E,4CAA4C;IAC5C,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrF,MAAM,WAAW,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IAC/D,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CACR,GAAG,YAAY,CAAC;YACd,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC;YACvF,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAChC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU;gBACtB,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;gBACnB,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;gBACpB,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;gBACpB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;gBAChB,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;gBACpB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;qBACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,EAAE,CAAC;qBACtC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG;aACpB,CAAC;SACH,CAAC,CACH,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzB,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACtC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG;oBACZ,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;oBACpE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,SAAS;iBACrE;qBACE,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;qBACtC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,KAAK,CAAC,IAAI,CACR,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACnF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EACtC,MAA0C,OAAO,CAAC,GAAG,EACrD,MAAY,IAAI,IAAI,EAAE,EACtB,SAA8B,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAC5D,SAA8B,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAE5D,IAAI,IAAgB,CAAC;IACrB,IAAI,CAAC;QACH,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,gBAAgB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC;QACvF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,CAAC,KAAK,CAAC,CAAC;QACd,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACvE,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACpD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,WAAW,CACzD,IAAI,CAAC,GAAG,EACR,KAAK,EACL,WAAW,EACX,eAAe,CAChB,CAAC;QACF,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,CACJ,+EAA+E;gBAC7E,gEAAgE,CACnE,CAAC;QACJ,CAAC;QACD,MAAM,oBAAoB,GAAG,0BAA0B,CAAC,KAAK,CAAC;YAC5D,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,UAAU,EAAE,uBAAuB,CAAC,IAAI,CAAC;SAC1C,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;QAEzD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAC/F,CAAC;QACD,OAAO,SAAS,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,CAAC,gBAAgB,OAAO,IAAI,CAAC,CAAC;QACpC,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,mFAAmF;AACnF,oFAAoF;AACpF,oFAAoF;AACpF,sFAAsF;AACtF,2DAA2D;AAC3D,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1E,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,CAAC"}
|
|
1
|
+
{"version":3,"file":"engineEval.js","sourceRoot":"","sources":["../../src/bin/engineEval.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* `list-users` — the npx-runnable admin report (issue #42). Connects directly
|
|
4
|
+
* to the Fonoster Identity Postgres database (a separate database from the
|
|
5
|
+
* qcobro app DB — see `database.url` in `identity.json`) and prints every
|
|
6
|
+
* user with their signup date and workspace count. Intended for an operator
|
|
7
|
+
* with direct DB access (e.g. a DigitalOcean droplet) who wants a quick
|
|
8
|
+
* account census without a manual SQL session. All imports below are
|
|
9
|
+
* relative (this file ships inside `@qcobro/common`; it must not import its
|
|
10
|
+
* own package by name).
|
|
11
|
+
*/
|
|
12
|
+
export interface CliOptions {
|
|
13
|
+
databaseUrl?: string;
|
|
14
|
+
json: boolean;
|
|
15
|
+
help: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare const USAGE = "Usage: list-users [options]\n\nList every Fonoster Identity user with their signup date and workspace count\n(owned + member, deduplicated), newest signups first.\n\nOptions:\n --database-url <url> Identity Postgres connection string\n (or QCOBRO_IDENTITY_DATABASE_URL)\n --json Print the rows as JSON instead of a table\n --help Show this help\n";
|
|
18
|
+
/** Raised for usage or database-connection failures. */
|
|
19
|
+
export declare class CliError extends Error {
|
|
20
|
+
}
|
|
21
|
+
/** Parses argv into typed options. Throws `CliError` on malformed flags. */
|
|
22
|
+
export declare function parseCliArgs(argv: string[]): CliOptions;
|
|
23
|
+
/** Resolves the Identity database URL from a flag, falling back to an env var. */
|
|
24
|
+
export declare function resolveDatabaseUrl(opts: Pick<CliOptions, "databaseUrl">, env: Record<string, string | undefined>): string;
|
|
25
|
+
export interface UserRow {
|
|
26
|
+
ref: string;
|
|
27
|
+
email: string;
|
|
28
|
+
name: string;
|
|
29
|
+
createdAt: string;
|
|
30
|
+
workspaceCount: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* node-postgres parses a connection string's `sslmode` differently from
|
|
34
|
+
* libpq: `require`/`prefer`/`verify-ca`/`verify-full` all become a *verifying*
|
|
35
|
+
* TLS config, which fails against a DigitalOcean managed database unless its
|
|
36
|
+
* CA bundle is trusted locally. The rest of this repo's admin tooling (see
|
|
37
|
+
* "Cleaning up gestiones" in the README) already accepts `sslmode=require` as
|
|
38
|
+
* meaning "encrypted, not verified" (libpq/psql semantics) — match that here
|
|
39
|
+
* so the same `DATABASE_URL`-style connection string works with both tools.
|
|
40
|
+
*
|
|
41
|
+
* Passing an explicit `ssl` override alongside `connectionString` is not
|
|
42
|
+
* enough: `pg`'s `ConnectionParameters` re-parses `connectionString` and
|
|
43
|
+
* merges that result *over* the config we pass (`Object.assign({}, config,
|
|
44
|
+
* parse(connectionString))`), and pg-connection-string no longer aliases
|
|
45
|
+
* `sslmode=require` to "don't verify" by default — so our override gets
|
|
46
|
+
* silently clobbered back to full verification. Stripping `sslmode` from the
|
|
47
|
+
* string leaves nothing for pg to re-derive `ssl` from, so the explicit
|
|
48
|
+
* override actually sticks.
|
|
49
|
+
*/
|
|
50
|
+
export declare function poolConfig(connectionString: string): {
|
|
51
|
+
connectionString: string;
|
|
52
|
+
ssl?: undefined;
|
|
53
|
+
} | {
|
|
54
|
+
connectionString: string;
|
|
55
|
+
ssl: {
|
|
56
|
+
rejectUnauthorized: boolean;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
/** Queries Identity's database directly. Exported so tests can substitute a stub. */
|
|
60
|
+
export declare function queryUsers(databaseUrl: string): Promise<UserRow[]>;
|
|
61
|
+
/** Renders the user rows as a plain-ASCII table. */
|
|
62
|
+
export declare function formatTable(users: UserRow[]): string;
|
|
63
|
+
/**
|
|
64
|
+
* Entry point. Exported (rather than only run inline) so it can be exercised
|
|
65
|
+
* directly if ever needed; the module also self-invokes when run via `node`
|
|
66
|
+
* or `npx` (see the guard at the bottom of the file). `queryUsersFn` is
|
|
67
|
+
* injectable so tests can substitute a stub instead of a live database.
|
|
68
|
+
*/
|
|
69
|
+
export declare function main(argv?: string[], env?: Record<string, string | undefined>, stdout?: (s: string) => void, stderr?: (s: string) => void, queryUsersFn?: (databaseUrl: string) => Promise<UserRow[]>): Promise<number>;
|
|
70
|
+
//# sourceMappingURL=listUsers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listUsers.d.ts","sourceRoot":"","sources":["../../src/bin/listUsers.ts"],"names":[],"mappings":";AAOA;;;;;;;;;GASG;AAEH,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACf;AAED,eAAO,MAAM,KAAK,2ZAUjB,CAAC;AAEF,wDAAwD;AACxD,qBAAa,QAAS,SAAQ,KAAK;CAAG;AAQtC,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAYvD;AAED,kFAAkF;AAClF,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,EACrC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GACtC,MAAM,CAQR;AAED,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,gBAAgB,EAAE,MAAM;;;;;;;;EAalD;AAyBD,qFAAqF;AACrF,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAcxE;AAED,oDAAoD;AACpD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAMpD;AAED;;;;;GAKG;AACH,wBAAsB,IAAI,CACxB,IAAI,GAAE,MAAM,EAA0B,EACtC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EACrD,MAAM,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAqC,EAC5D,MAAM,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAqC,EAC5D,YAAY,GAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,EAAE,CAAc,GACrE,OAAO,CAAC,MAAM,CAAC,CA2BjB"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { realpathSync } from "node:fs";
|
|
3
|
+
import { parseArgs } from "node:util";
|
|
4
|
+
import { pathToFileURL } from "node:url";
|
|
5
|
+
import { Pool } from "pg";
|
|
6
|
+
import { alignColumns } from "./tableFormat.js";
|
|
7
|
+
export const USAGE = `Usage: list-users [options]
|
|
8
|
+
|
|
9
|
+
List every Fonoster Identity user with their signup date and workspace count
|
|
10
|
+
(owned + member, deduplicated), newest signups first.
|
|
11
|
+
|
|
12
|
+
Options:
|
|
13
|
+
--database-url <url> Identity Postgres connection string
|
|
14
|
+
(or QCOBRO_IDENTITY_DATABASE_URL)
|
|
15
|
+
--json Print the rows as JSON instead of a table
|
|
16
|
+
--help Show this help
|
|
17
|
+
`;
|
|
18
|
+
/** Raised for usage or database-connection failures. */
|
|
19
|
+
export class CliError extends Error {
|
|
20
|
+
}
|
|
21
|
+
const OPTION_SPEC = {
|
|
22
|
+
"database-url": { type: "string" },
|
|
23
|
+
json: { type: "boolean", default: false },
|
|
24
|
+
help: { type: "boolean", default: false }
|
|
25
|
+
};
|
|
26
|
+
/** Parses argv into typed options. Throws `CliError` on malformed flags. */
|
|
27
|
+
export function parseCliArgs(argv) {
|
|
28
|
+
let values;
|
|
29
|
+
try {
|
|
30
|
+
({ values } = parseArgs({ args: argv, options: OPTION_SPEC, allowPositionals: false }));
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
throw new CliError(`Invalid arguments: ${err instanceof Error ? err.message : String(err)}`);
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
databaseUrl: values["database-url"],
|
|
37
|
+
json: values.json ?? false,
|
|
38
|
+
help: values.help ?? false
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/** Resolves the Identity database URL from a flag, falling back to an env var. */
|
|
42
|
+
export function resolveDatabaseUrl(opts, env) {
|
|
43
|
+
const databaseUrl = opts.databaseUrl ?? env.QCOBRO_IDENTITY_DATABASE_URL;
|
|
44
|
+
if (!databaseUrl) {
|
|
45
|
+
throw new CliError("Missing Identity database URL: pass --database-url or set " + "QCOBRO_IDENTITY_DATABASE_URL");
|
|
46
|
+
}
|
|
47
|
+
return databaseUrl;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* node-postgres parses a connection string's `sslmode` differently from
|
|
51
|
+
* libpq: `require`/`prefer`/`verify-ca`/`verify-full` all become a *verifying*
|
|
52
|
+
* TLS config, which fails against a DigitalOcean managed database unless its
|
|
53
|
+
* CA bundle is trusted locally. The rest of this repo's admin tooling (see
|
|
54
|
+
* "Cleaning up gestiones" in the README) already accepts `sslmode=require` as
|
|
55
|
+
* meaning "encrypted, not verified" (libpq/psql semantics) — match that here
|
|
56
|
+
* so the same `DATABASE_URL`-style connection string works with both tools.
|
|
57
|
+
*
|
|
58
|
+
* Passing an explicit `ssl` override alongside `connectionString` is not
|
|
59
|
+
* enough: `pg`'s `ConnectionParameters` re-parses `connectionString` and
|
|
60
|
+
* merges that result *over* the config we pass (`Object.assign({}, config,
|
|
61
|
+
* parse(connectionString))`), and pg-connection-string no longer aliases
|
|
62
|
+
* `sslmode=require` to "don't verify" by default — so our override gets
|
|
63
|
+
* silently clobbered back to full verification. Stripping `sslmode` from the
|
|
64
|
+
* string leaves nothing for pg to re-derive `ssl` from, so the explicit
|
|
65
|
+
* override actually sticks.
|
|
66
|
+
*/
|
|
67
|
+
export function poolConfig(connectionString) {
|
|
68
|
+
const sslRequested = /sslmode=(require|prefer|verify-ca|verify-full|no-verify)/.test(connectionString);
|
|
69
|
+
if (!sslRequested) {
|
|
70
|
+
return { connectionString };
|
|
71
|
+
}
|
|
72
|
+
const url = new URL(connectionString);
|
|
73
|
+
url.searchParams.delete("sslmode");
|
|
74
|
+
return {
|
|
75
|
+
connectionString: url.toString(),
|
|
76
|
+
ssl: { rejectUnauthorized: false }
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Every user, with their signup date and a deduplicated count of workspaces
|
|
81
|
+
* they own or belong to. The UNION dedupes a workspace an owner might also
|
|
82
|
+
* hold a WorkspaceMember row for, without depending on whether Identity
|
|
83
|
+
* always creates that row.
|
|
84
|
+
*/
|
|
85
|
+
const USERS_QUERY = `
|
|
86
|
+
SELECT
|
|
87
|
+
u.ref,
|
|
88
|
+
u.email,
|
|
89
|
+
u.name,
|
|
90
|
+
u.created_at AS "createdAt",
|
|
91
|
+
count(DISTINCT ws.ref) AS "workspaceCount"
|
|
92
|
+
FROM users u
|
|
93
|
+
LEFT JOIN (
|
|
94
|
+
SELECT owner_ref AS user_ref, ref FROM workspaces
|
|
95
|
+
UNION
|
|
96
|
+
SELECT user_ref, workspace_ref AS ref FROM workspace_members
|
|
97
|
+
) ws ON ws.user_ref = u.ref
|
|
98
|
+
GROUP BY u.ref, u.email, u.name, u.created_at
|
|
99
|
+
ORDER BY u.created_at DESC
|
|
100
|
+
`;
|
|
101
|
+
/** Queries Identity's database directly. Exported so tests can substitute a stub. */
|
|
102
|
+
export async function queryUsers(databaseUrl) {
|
|
103
|
+
const pool = new Pool(poolConfig(databaseUrl));
|
|
104
|
+
try {
|
|
105
|
+
const { rows } = await pool.query(USERS_QUERY);
|
|
106
|
+
return rows.map((row) => ({
|
|
107
|
+
ref: row.ref,
|
|
108
|
+
email: row.email,
|
|
109
|
+
name: row.name,
|
|
110
|
+
createdAt: new Date(row.createdAt).toISOString(),
|
|
111
|
+
workspaceCount: Number(row.workspaceCount)
|
|
112
|
+
}));
|
|
113
|
+
}
|
|
114
|
+
finally {
|
|
115
|
+
await pool.end();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/** Renders the user rows as a plain-ASCII table. */
|
|
119
|
+
export function formatTable(users) {
|
|
120
|
+
if (users.length === 0)
|
|
121
|
+
return "(no users found)";
|
|
122
|
+
return alignColumns([
|
|
123
|
+
["email", "name", "created", "workspaces"],
|
|
124
|
+
...users.map((u) => [u.email, u.name, u.createdAt.slice(0, 10), String(u.workspaceCount)])
|
|
125
|
+
]).join("\n");
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Entry point. Exported (rather than only run inline) so it can be exercised
|
|
129
|
+
* directly if ever needed; the module also self-invokes when run via `node`
|
|
130
|
+
* or `npx` (see the guard at the bottom of the file). `queryUsersFn` is
|
|
131
|
+
* injectable so tests can substitute a stub instead of a live database.
|
|
132
|
+
*/
|
|
133
|
+
export async function main(argv = process.argv.slice(2), env = process.env, stdout = (s) => process.stdout.write(s), stderr = (s) => process.stderr.write(s), queryUsersFn = queryUsers) {
|
|
134
|
+
let opts;
|
|
135
|
+
try {
|
|
136
|
+
opts = parseCliArgs(argv);
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
stderr(`list-users: ${err instanceof Error ? err.message : String(err)}\n\n${USAGE}`);
|
|
140
|
+
return 2;
|
|
141
|
+
}
|
|
142
|
+
if (opts.help) {
|
|
143
|
+
stdout(USAGE);
|
|
144
|
+
return 0;
|
|
145
|
+
}
|
|
146
|
+
try {
|
|
147
|
+
const databaseUrl = resolveDatabaseUrl(opts, env);
|
|
148
|
+
const users = await queryUsersFn(databaseUrl);
|
|
149
|
+
if (opts.json) {
|
|
150
|
+
stdout(JSON.stringify(users, null, 2) + "\n");
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
stdout(formatTable(users) + "\n");
|
|
154
|
+
}
|
|
155
|
+
return 0;
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
159
|
+
stderr(`list-users: ${message}\n`);
|
|
160
|
+
return 2;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// Only run when this file is the process entry point (not when imported by tests).
|
|
164
|
+
// Compares resolved real paths, not raw strings: npm/npx always launch bins through
|
|
165
|
+
// a node_modules/.bin symlink, so argv[1] is the symlink path while import.meta.url
|
|
166
|
+
// is already resolved to the real file — a raw-string comparison never matches there,
|
|
167
|
+
// silently skipping main() with no output and exit code 0.
|
|
168
|
+
if (import.meta.url === pathToFileURL(realpathSync(process.argv[1])).href) {
|
|
169
|
+
main().then((code) => process.exit(code));
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=listUsers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listUsers.js","sourceRoot":"","sources":["../../src/bin/listUsers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renders rows as aligned columns: each column as wide as its widest cell,
|
|
3
|
+
* numeric-looking cells right-aligned, two spaces between columns. Width is
|
|
4
|
+
* computed from the data, so alignment holds for any campaign name or count.
|
|
5
|
+
* Shared by every CLI bin in this package that prints a plain-ASCII table.
|
|
6
|
+
*/
|
|
7
|
+
export declare function alignColumns(rows: string[][], indent?: string): string[];
|
|
8
|
+
//# sourceMappingURL=tableFormat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tableFormat.d.ts","sourceRoot":"","sources":["../../src/bin/tableFormat.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,SAAO,GAAG,MAAM,EAAE,CAqBtE"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renders rows as aligned columns: each column as wide as its widest cell,
|
|
3
|
+
* numeric-looking cells right-aligned, two spaces between columns. Width is
|
|
4
|
+
* computed from the data, so alignment holds for any campaign name or count.
|
|
5
|
+
* Shared by every CLI bin in this package that prints a plain-ASCII table.
|
|
6
|
+
*/
|
|
7
|
+
export function alignColumns(rows, indent = " ") {
|
|
8
|
+
const widths = [];
|
|
9
|
+
for (const row of rows) {
|
|
10
|
+
row.forEach((cell, i) => {
|
|
11
|
+
widths[i] = Math.max(widths[i] ?? 0, cell.length);
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
const numeric = /^[\d,.%]+$/;
|
|
15
|
+
return rows.map((row) => (indent +
|
|
16
|
+
row
|
|
17
|
+
.map((cell, i) => {
|
|
18
|
+
const w = widths[i];
|
|
19
|
+
// Last column flows free; numbers right-align under their header.
|
|
20
|
+
if (i === row.length - 1)
|
|
21
|
+
return cell;
|
|
22
|
+
return numeric.test(cell) ? cell.padStart(w) : cell.padEnd(w);
|
|
23
|
+
})
|
|
24
|
+
.join(" ")).trimEnd());
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=tableFormat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tableFormat.js","sourceRoot":"","sources":["../../src/bin/tableFormat.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAgB,EAAE,MAAM,GAAG,IAAI;IAC1D,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACtB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC;IAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACtB,CACE,MAAM;QACN,GAAG;aACA,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACf,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACpB,kEAAkE;YAClE,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;YACtC,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CACd,CAAC,OAAO,EAAE,CACZ,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qcobro/common",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.19.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist"
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
".": "./dist/index.js"
|
|
13
13
|
},
|
|
14
14
|
"bin": {
|
|
15
|
-
"engine-eval": "./dist/bin/engineEval.js"
|
|
15
|
+
"engine-eval": "./dist/bin/engineEval.js",
|
|
16
|
+
"list-users": "./dist/bin/listUsers.js"
|
|
16
17
|
},
|
|
17
18
|
"scripts": {
|
|
18
19
|
"build": "tsc -b --force",
|
|
@@ -22,9 +23,11 @@
|
|
|
22
23
|
},
|
|
23
24
|
"dependencies": {
|
|
24
25
|
"handlebars": "^4.7.9",
|
|
26
|
+
"pg": "^8.13.0",
|
|
25
27
|
"zod": "^4.0.0"
|
|
26
28
|
},
|
|
27
29
|
"devDependencies": {
|
|
30
|
+
"@types/pg": "^8.11.0",
|
|
28
31
|
"tsx": "^4.0.0",
|
|
29
32
|
"typescript": "^5.9.0"
|
|
30
33
|
}
|