@adriangalilea/utils 1.8.0 → 1.9.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/bot/flags.d.ts +41 -4
- package/dist/bot/flags.d.ts.map +1 -1
- package/dist/bot/flags.js +51 -8
- package/dist/bot/flags.js.map +1 -1
- package/package.json +1 -1
package/dist/bot/flags.d.ts
CHANGED
|
@@ -19,6 +19,18 @@ export type FlagSpec<K extends FlagKind = FlagKind> = {
|
|
|
19
19
|
help?: string;
|
|
20
20
|
/** Code default — a scalar, or a tier map for per-tier values. */
|
|
21
21
|
default: KindValue[K] | TierMap<KindValue[K]>;
|
|
22
|
+
/** Number flags: inclusive write-time bounds. Many writers touch a flag (bot admin
|
|
23
|
+
* taps, web consoles, fat fingers) — bounds make an insane value unwritable at the
|
|
24
|
+
* shared rule ({@link flagValueError}) instead of trusting every panel separately. */
|
|
25
|
+
min?: number;
|
|
26
|
+
max?: number;
|
|
27
|
+
/**
|
|
28
|
+
* String flags: the closed set of allowed values — the flag becomes an ENUM. Panels
|
|
29
|
+
* render a picker instead of free text, and in-bot admin menus can ROTATE through the
|
|
30
|
+
* values on tap (off → admins → all → off …). The audience-gating convention lives in
|
|
31
|
+
* {@link audienceAllows}.
|
|
32
|
+
*/
|
|
33
|
+
choices?: readonly string[];
|
|
22
34
|
};
|
|
23
35
|
/** What `describe()` returns per flag — JSON-safe, for panels/consoles. */
|
|
24
36
|
export type FlagDescriptor = {
|
|
@@ -29,6 +41,9 @@ export type FlagDescriptor = {
|
|
|
29
41
|
default: unknown;
|
|
30
42
|
/** Whether the DECLARED default is per-tier (panels offer tier inputs). */
|
|
31
43
|
tiered: boolean;
|
|
44
|
+
min?: number;
|
|
45
|
+
max?: number;
|
|
46
|
+
choices?: readonly string[];
|
|
32
47
|
};
|
|
33
48
|
export type FlagsBackend = {
|
|
34
49
|
/** Read the bot's operator-config record (plain JSON object). */
|
|
@@ -66,12 +81,34 @@ export type Flags<Spec extends Record<string, FlagSpec>> = {
|
|
|
66
81
|
* external panels can render a tier map as per-tier inputs. */
|
|
67
82
|
export declare const isTierMap: (v: unknown) => v is TierMap<unknown>;
|
|
68
83
|
/**
|
|
69
|
-
* A scalar of the right kind, or a tier map whose every value is. THE
|
|
70
|
-
*
|
|
71
|
-
* (a web console patching the same config record directly) validates with
|
|
72
|
-
* the SAME function instead of restating it.
|
|
84
|
+
* A scalar of the right kind, or a tier map whose every value is. THE shape half
|
|
85
|
+
* of the write rule; see {@link flagValueError} for the full rule with constraints.
|
|
73
86
|
*/
|
|
74
87
|
export declare const flagValueOk: (kind: FlagKind, v: unknown) => boolean;
|
|
88
|
+
/** The constraint surface {@link flagValueError} checks — a FlagDescriptor satisfies it. */
|
|
89
|
+
export type FlagConstraints = {
|
|
90
|
+
kind: FlagKind;
|
|
91
|
+
min?: number;
|
|
92
|
+
max?: number;
|
|
93
|
+
choices?: readonly string[];
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* THE write rule, complete: shape (kind, tier maps) plus constraints (bounds, choices).
|
|
97
|
+
* Returns null when the value is writable, else a human-readable reason. `flags.set`
|
|
98
|
+
* enforces it, and it's exported so any external writer (a web console patching the
|
|
99
|
+
* same config record directly, an in-bot input prompt) validates with the SAME function
|
|
100
|
+
* instead of restating it. Constraints apply at WRITE time only — reads keep shape-checking
|
|
101
|
+
* so tightening a bound later never bricks an already-stored value.
|
|
102
|
+
*/
|
|
103
|
+
export declare const flagValueError: (spec: FlagConstraints, v: unknown) => string | null;
|
|
104
|
+
/**
|
|
105
|
+
* The audience-gating convention for a `choices: ["off", "admins", "all"]` flag:
|
|
106
|
+
* a staged rollout an in-bot menu rotates through on tap. `off` gates everyone,
|
|
107
|
+
* `admins` opens it to operators/testers, `all` ships it.
|
|
108
|
+
*/
|
|
109
|
+
export declare const audienceAllows: (value: string, opts: {
|
|
110
|
+
admin: boolean;
|
|
111
|
+
}) => boolean;
|
|
75
112
|
export declare function defineFlags<Spec extends Record<string, FlagSpec>>(spec: Spec, backend: FlagsBackend): Flags<Spec>;
|
|
76
113
|
export {};
|
|
77
114
|
//# sourceMappingURL=flags.d.ts.map
|
package/dist/bot/flags.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../src/bot/flags.ts"],"names":[],"mappings":"AA4DA,iEAAiE;AACjE,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,GAAG,CAAC,EAAE,CAAC,CAAA;CAAE,GAAG;IAC/C,CAAC,IAAI,EAAE,OAAO,MAAM,EAAE,GAAG,CAAC,CAAC;CAC3B,CAAC;AAEF,KAAK,SAAS,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE,MAAM,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC;AAEvC,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,IAAI;IACrD,IAAI,EAAE,CAAC,CAAC;IACR,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../src/bot/flags.ts"],"names":[],"mappings":"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"}
|
package/dist/bot/flags.js
CHANGED
|
@@ -88,23 +88,62 @@ const resolveTiered = (value, tier) => {
|
|
|
88
88
|
};
|
|
89
89
|
const kindOk = (kind, v) => kind === "bool" ? typeof v === "boolean" : typeof v === kind;
|
|
90
90
|
/**
|
|
91
|
-
* A scalar of the right kind, or a tier map whose every value is. THE
|
|
92
|
-
*
|
|
93
|
-
* (a web console patching the same config record directly) validates with
|
|
94
|
-
* the SAME function instead of restating it.
|
|
91
|
+
* A scalar of the right kind, or a tier map whose every value is. THE shape half
|
|
92
|
+
* of the write rule; see {@link flagValueError} for the full rule with constraints.
|
|
95
93
|
*/
|
|
96
94
|
export const flagValueOk = (kind, v) => {
|
|
97
95
|
if (isTierMap(v))
|
|
98
96
|
return Object.values(v).every((t) => kindOk(kind, t));
|
|
99
97
|
return kindOk(kind, v);
|
|
100
98
|
};
|
|
99
|
+
/**
|
|
100
|
+
* THE write rule, complete: shape (kind, tier maps) plus constraints (bounds, choices).
|
|
101
|
+
* Returns null when the value is writable, else a human-readable reason. `flags.set`
|
|
102
|
+
* enforces it, and it's exported so any external writer (a web console patching the
|
|
103
|
+
* same config record directly, an in-bot input prompt) validates with the SAME function
|
|
104
|
+
* instead of restating it. Constraints apply at WRITE time only — reads keep shape-checking
|
|
105
|
+
* so tightening a bound later never bricks an already-stored value.
|
|
106
|
+
*/
|
|
107
|
+
export const flagValueError = (spec, v) => {
|
|
108
|
+
if (!flagValueOk(spec.kind, v))
|
|
109
|
+
return `not a ${spec.kind} (or a tier map of them)`;
|
|
110
|
+
const scalars = isTierMap(v) ? Object.values(v) : [v];
|
|
111
|
+
for (const s of scalars) {
|
|
112
|
+
if (spec.kind === "number") {
|
|
113
|
+
const n = s;
|
|
114
|
+
if (!Number.isFinite(n))
|
|
115
|
+
return "not a finite number";
|
|
116
|
+
if (spec.min !== undefined && n < spec.min)
|
|
117
|
+
return `below the minimum (${spec.min})`;
|
|
118
|
+
if (spec.max !== undefined && n > spec.max)
|
|
119
|
+
return `above the maximum (${spec.max})`;
|
|
120
|
+
}
|
|
121
|
+
if (spec.choices && !spec.choices.includes(s)) {
|
|
122
|
+
return `must be one of: ${spec.choices.join(" · ")}`;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return null;
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* The audience-gating convention for a `choices: ["off", "admins", "all"]` flag:
|
|
129
|
+
* a staged rollout an in-bot menu rotates through on tap. `off` gates everyone,
|
|
130
|
+
* `admins` opens it to operators/testers, `all` ships it.
|
|
131
|
+
*/
|
|
132
|
+
export const audienceAllows = (value, opts) => {
|
|
133
|
+
if (value === "all")
|
|
134
|
+
return true;
|
|
135
|
+
if (value === "admins")
|
|
136
|
+
return opts.admin;
|
|
137
|
+
return false;
|
|
138
|
+
};
|
|
101
139
|
// ─── the factory ─────────────────────────────────────────────────────
|
|
102
140
|
export function defineFlags(spec, backend) {
|
|
103
141
|
for (const [key, s] of Object.entries(spec)) {
|
|
104
142
|
if (RESERVED.has(key))
|
|
105
143
|
panic(`flags: "${key}" is a reserved name`);
|
|
106
|
-
|
|
107
|
-
|
|
144
|
+
const reason = flagValueError(s, s.default);
|
|
145
|
+
if (reason !== null)
|
|
146
|
+
panic(`flags: "${key}" default rejected: ${reason}`, s.default);
|
|
108
147
|
}
|
|
109
148
|
// One config read per update: multiple flag reads on the same ctx share
|
|
110
149
|
// the same in-flight promise (keyed on ctx object identity).
|
|
@@ -140,6 +179,9 @@ export function defineFlags(spec, backend) {
|
|
|
140
179
|
...(s.help !== undefined ? { help: s.help } : {}),
|
|
141
180
|
default: s.default,
|
|
142
181
|
tiered: isTierMap(s.default),
|
|
182
|
+
...(s.min !== undefined ? { min: s.min } : {}),
|
|
183
|
+
...(s.max !== undefined ? { max: s.max } : {}),
|
|
184
|
+
...(s.choices !== undefined ? { choices: s.choices } : {}),
|
|
143
185
|
})),
|
|
144
186
|
overrides: async (ctx) => {
|
|
145
187
|
const stored = await configFor(ctx);
|
|
@@ -156,11 +198,12 @@ export function defineFlags(spec, backend) {
|
|
|
156
198
|
const s = spec[key] ?? panic(`flags: unknown flag "${key}"`);
|
|
157
199
|
if (!backend.write)
|
|
158
200
|
panic("flags: set() needs a write backend");
|
|
159
|
-
|
|
201
|
+
const reason = value === null ? null : flagValueError(s, value);
|
|
202
|
+
if (reason !== null)
|
|
160
203
|
throw new SourcedError({
|
|
161
204
|
source: "flags",
|
|
162
205
|
operation: "set",
|
|
163
|
-
message: `value for "${key}"
|
|
206
|
+
message: `value for "${key}" rejected: ${reason}`,
|
|
164
207
|
context: { key, value },
|
|
165
208
|
});
|
|
166
209
|
await backend.write(ctx, { [key]: value });
|
package/dist/bot/flags.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flags.js","sourceRoot":"","sources":["../../src/bot/flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"flags.js","sourceRoot":"","sources":["../../src/bot/flags.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED