@flyingrobots/bijou-node 7.1.0 → 8.0.0-rc.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/chalk-token-styler.d.ts +4 -0
- package/dist/chalk-token-styler.d.ts.map +1 -0
- package/dist/chalk-token-styler.js +79 -0
- package/dist/chalk-token-styler.js.map +1 -0
- package/dist/gifenc-runtime.d.ts +5 -0
- package/dist/gifenc-runtime.d.ts.map +1 -0
- package/dist/gifenc-runtime.js +30 -0
- package/dist/gifenc-runtime.js.map +1 -0
- package/dist/index.d.ts +7 -56
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -117
- package/dist/index.js.map +1 -1
- package/dist/index.test-support.d.ts +11 -0
- package/dist/index.test-support.d.ts.map +1 -0
- package/dist/index.test-support.js +9 -0
- package/dist/index.test-support.js.map +1 -0
- package/dist/index.test-support.part01.d.ts +28 -0
- package/dist/index.test-support.part01.d.ts.map +1 -0
- package/dist/index.test-support.part01.js +89 -0
- package/dist/index.test-support.part01.js.map +1 -0
- package/dist/index.test-support.part02.d.ts +5 -0
- package/dist/index.test-support.part02.d.ts.map +1 -0
- package/dist/index.test-support.part02.js +63 -0
- package/dist/index.test-support.part02.js.map +1 -0
- package/dist/io-types.d.ts +26 -0
- package/dist/io-types.d.ts.map +1 -0
- package/dist/io-types.js +2 -0
- package/dist/io-types.js.map +1 -0
- package/dist/io.d.ts +3 -18
- package/dist/io.d.ts.map +1 -1
- package/dist/io.js +10 -17
- package/dist/io.js.map +1 -1
- package/dist/io.test-support.d.ts +5 -0
- package/dist/io.test-support.d.ts.map +1 -0
- package/dist/io.test-support.js +13 -0
- package/dist/io.test-support.js.map +1 -0
- package/dist/node-context-selection.d.ts +11 -0
- package/dist/node-context-selection.d.ts.map +1 -0
- package/dist/node-context-selection.js +77 -0
- package/dist/node-context-selection.js.map +1 -0
- package/dist/node-context.d.ts +14 -0
- package/dist/node-context.d.ts.map +1 -0
- package/dist/node-context.js +30 -0
- package/dist/node-context.js.map +1 -0
- package/dist/oled-font.d.ts +8 -0
- package/dist/oled-font.d.ts.map +1 -0
- package/dist/oled-font.js +28 -0
- package/dist/oled-font.js.map +1 -0
- package/dist/options.d.ts +48 -0
- package/dist/options.d.ts.map +1 -0
- package/dist/options.js +2 -0
- package/dist/options.js.map +1 -0
- package/dist/readline-output.d.ts +3 -0
- package/dist/readline-output.d.ts.map +1 -0
- package/dist/readline-output.js +20 -0
- package/dist/readline-output.js.map +1 -0
- package/dist/recorder.d.ts +2 -40
- package/dist/recorder.d.ts.map +1 -1
- package/dist/recorder.js +1 -240
- package/dist/recorder.js.map +1 -1
- package/dist/recorder.part01.d.ts +56 -0
- package/dist/recorder.part01.d.ts.map +1 -0
- package/dist/recorder.part01.js +76 -0
- package/dist/recorder.part01.js.map +1 -0
- package/dist/recorder.part02.d.ts +5 -0
- package/dist/recorder.part02.d.ts.map +1 -0
- package/dist/recorder.part02.js +54 -0
- package/dist/recorder.part02.js.map +1 -0
- package/dist/recorder.part03.d.ts +6 -0
- package/dist/recorder.part03.d.ts.map +1 -0
- package/dist/recorder.part03.js +118 -0
- package/dist/recorder.part03.js.map +1 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +10 -4
- package/dist/runtime.js.map +1 -1
- package/dist/style.d.ts +1 -8
- package/dist/style.d.ts.map +1 -1
- package/dist/style.js +10 -98
- package/dist/style.js.map +1 -1
- package/dist/worker/fixtures/echo-worker.js +7 -6
- package/dist/worker/fixtures/echo-worker.js.map +1 -1
- package/dist/worker/worker-data.d.ts +25 -0
- package/dist/worker/worker-data.d.ts.map +1 -0
- package/dist/worker/worker-data.js +44 -0
- package/dist/worker/worker-data.js.map +1 -0
- package/dist/worker/worker-mouse-mode.d.ts +10 -0
- package/dist/worker/worker-mouse-mode.d.ts.map +1 -0
- package/dist/worker/worker-mouse-mode.js +14 -0
- package/dist/worker/worker-mouse-mode.js.map +1 -0
- package/dist/worker/worker-options.d.ts +33 -0
- package/dist/worker/worker-options.d.ts.map +1 -0
- package/dist/worker/worker-options.js +2 -0
- package/dist/worker/worker-options.js.map +1 -0
- package/dist/worker/worker.d.ts +5 -106
- package/dist/worker/worker.d.ts.map +1 -1
- package/dist/worker/worker.js +3 -228
- package/dist/worker/worker.js.map +1 -1
- package/dist/worker/worker.part01.d.ts +59 -0
- package/dist/worker/worker.part01.d.ts.map +1 -0
- package/dist/worker/worker.part01.js +40 -0
- package/dist/worker/worker.part01.js.map +1 -0
- package/dist/worker/worker.part02.d.ts +12 -0
- package/dist/worker/worker.part02.d.ts.map +1 -0
- package/dist/worker/worker.part02.js +121 -0
- package/dist/worker/worker.part02.js.map +1 -0
- package/dist/worker/worker.part03.d.ts +13 -0
- package/dist/worker/worker.part03.d.ts.map +1 -0
- package/dist/worker/worker.part03.js +106 -0
- package/dist/worker/worker.part03.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ChalkInstance } from 'chalk';
|
|
2
|
+
import type { TokenValue } from '@flyingrobots/bijou';
|
|
3
|
+
export declare function createChalkTokenStyler(instance: ChalkInstance, ansiEnabled: boolean): (token: TokenValue, text: string) => string;
|
|
4
|
+
//# sourceMappingURL=chalk-token-styler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chalk-token-styler.d.ts","sourceRoot":"","sources":["../src/chalk-token-styler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAoFtD,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,aAAa,EACvB,WAAW,EAAE,OAAO,GACnB,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAY7C"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
const UNDERLINE_VARIANT_SGR = {
|
|
2
|
+
'curly-underline': '\x1b[4:3m',
|
|
3
|
+
'dotted-underline': '\x1b[4:4m',
|
|
4
|
+
'dashed-underline': '\x1b[4:5m',
|
|
5
|
+
};
|
|
6
|
+
const UNDERLINE_RESET = '\x1b[24m';
|
|
7
|
+
function applyModifiers(instance, modifiers) {
|
|
8
|
+
if (modifiers === undefined)
|
|
9
|
+
return instance;
|
|
10
|
+
let result = instance;
|
|
11
|
+
for (const modifier of modifiers) {
|
|
12
|
+
switch (modifier) {
|
|
13
|
+
case 'bold':
|
|
14
|
+
result = result.bold;
|
|
15
|
+
break;
|
|
16
|
+
case 'dim':
|
|
17
|
+
result = result.dim;
|
|
18
|
+
break;
|
|
19
|
+
case 'strikethrough':
|
|
20
|
+
result = result.strikethrough;
|
|
21
|
+
break;
|
|
22
|
+
case 'inverse':
|
|
23
|
+
result = result.inverse;
|
|
24
|
+
break;
|
|
25
|
+
case 'underline':
|
|
26
|
+
result = result.underline;
|
|
27
|
+
break;
|
|
28
|
+
case 'curly-underline':
|
|
29
|
+
case 'dotted-underline':
|
|
30
|
+
case 'dashed-underline':
|
|
31
|
+
break;
|
|
32
|
+
default: {
|
|
33
|
+
const exhaustive = modifier;
|
|
34
|
+
void exhaustive;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
40
|
+
function applyUnderlineVariants(text, ansiEnabled, modifiers) {
|
|
41
|
+
if (!ansiEnabled || modifiers === undefined)
|
|
42
|
+
return text;
|
|
43
|
+
let result = text;
|
|
44
|
+
for (const modifier of modifiers) {
|
|
45
|
+
const sgr = UNDERLINE_VARIANT_SGR[modifier];
|
|
46
|
+
if (sgr !== undefined) {
|
|
47
|
+
result = sgr + result + UNDERLINE_RESET;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
function styleCacheKey(token) {
|
|
53
|
+
return [token.hex, token.bg, token.modifiers?.join(',') ?? ''].join('|');
|
|
54
|
+
}
|
|
55
|
+
function compileStyled(instance, ansiEnabled, token) {
|
|
56
|
+
const base = applyModifiers(token.hex ? instance.hex(token.hex) : instance, token.modifiers);
|
|
57
|
+
const background = token.bg ? instance.bgHex(token.bg) : null;
|
|
58
|
+
const modifiers = token.modifiers;
|
|
59
|
+
return (text) => {
|
|
60
|
+
let result = base(text);
|
|
61
|
+
result = applyUnderlineVariants(result, ansiEnabled, modifiers);
|
|
62
|
+
return background === null ? result : background(result);
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
export function createChalkTokenStyler(instance, ansiEnabled) {
|
|
66
|
+
const styledCache = new Map();
|
|
67
|
+
return (token, text) => {
|
|
68
|
+
if (!ansiEnabled)
|
|
69
|
+
return text;
|
|
70
|
+
const key = styleCacheKey(token);
|
|
71
|
+
let styler = styledCache.get(key);
|
|
72
|
+
if (styler === undefined) {
|
|
73
|
+
styler = compileStyled(instance, ansiEnabled, token);
|
|
74
|
+
styledCache.set(key, styler);
|
|
75
|
+
}
|
|
76
|
+
return styler(text);
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=chalk-token-styler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chalk-token-styler.js","sourceRoot":"","sources":["../src/chalk-token-styler.ts"],"names":[],"mappings":"AAGA,MAAM,qBAAqB,GAAqC;IAC9D,iBAAiB,EAAE,WAAW;IAC9B,kBAAkB,EAAE,WAAW;IAC/B,kBAAkB,EAAE,WAAW;CAChC,CAAC;AACF,MAAM,eAAe,GAAG,UAAU,CAAC;AAEnC,SAAS,cAAc,CACrB,QAAuB,EACvB,SAAmC;IAEnC,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC7C,IAAI,MAAM,GAAG,QAAQ,CAAC;IACtB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,MAAM;gBACT,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;gBACrB,MAAM;YACR,KAAK,KAAK;gBACR,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;gBACpB,MAAM;YACR,KAAK,eAAe;gBAClB,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;gBAC9B,MAAM;YACR,KAAK,SAAS;gBACZ,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;gBACxB,MAAM;YACR,KAAK,WAAW;gBACd,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;gBAC1B,MAAM;YACR,KAAK,iBAAiB,CAAC;YACvB,KAAK,kBAAkB,CAAC;YACxB,KAAK,kBAAkB;gBACrB,MAAM;YACR,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,UAAU,GAAU,QAAQ,CAAC;gBACnC,KAAK,UAAU,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,sBAAsB,CAC7B,IAAY,EACZ,WAAoB,EACpB,SAAmC;IAEnC,IAAI,CAAC,WAAW,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACzD,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,eAAe,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,KAAiB;IACtC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,aAAa,CACpB,QAAuB,EACvB,WAAoB,EACpB,KAAiB;IAEjB,MAAM,IAAI,GAAG,cAAc,CACzB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAC9C,KAAK,CAAC,SAAS,CAChB,CAAC;IACF,MAAM,UAAU,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAElC,OAAO,CAAC,IAAY,EAAU,EAAE;QAC9B,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,GAAG,sBAAsB,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QAChE,OAAO,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,QAAuB,EACvB,WAAoB;IAEpB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAoC,CAAC;IAChE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QAC9B,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;YACrD,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { GifEncoderOptions, GifEncoderStream, PaletteColor, PaletteFormat, QuantizeOptions } from 'gifenc';
|
|
2
|
+
export declare function createGifEncoder(options?: GifEncoderOptions): GifEncoderStream;
|
|
3
|
+
export declare function applyGifPalette(rgba: Uint8Array | Uint8ClampedArray, palette: PaletteColor[], format?: PaletteFormat): Uint8Array;
|
|
4
|
+
export declare function quantizeColors(rgba: Uint8Array | Uint8ClampedArray, maxColors: number, options?: QuantizeOptions): PaletteColor[];
|
|
5
|
+
//# sourceMappingURL=gifenc-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gifenc-runtime.d.ts","sourceRoot":"","sources":["../src/gifenc-runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,eAAe,EAChB,MAAM,QAAQ,CAAC;AAyChB,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,gBAAgB,CAE9E;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,UAAU,GAAG,iBAAiB,EACpC,OAAO,EAAE,YAAY,EAAE,EACvB,MAAM,CAAC,EAAE,aAAa,GACrB,UAAU,CAEZ;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,UAAU,GAAG,iBAAiB,EACpC,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,eAAe,GACxB,YAAY,EAAE,CAEhB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as gifencModule from 'gifenc';
|
|
2
|
+
function isRecord(value) {
|
|
3
|
+
return typeof value === 'object' && value !== null;
|
|
4
|
+
}
|
|
5
|
+
function isGifencRuntime(value) {
|
|
6
|
+
return (isRecord(value)
|
|
7
|
+
&& typeof value['GIFEncoder'] === 'function'
|
|
8
|
+
&& typeof value['applyPalette'] === 'function'
|
|
9
|
+
&& typeof value['quantize'] === 'function');
|
|
10
|
+
}
|
|
11
|
+
function resolveGifencRuntime(value) {
|
|
12
|
+
if (isGifencRuntime(value)) {
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
15
|
+
if (isRecord(value) && isGifencRuntime(value['default'])) {
|
|
16
|
+
return value['default'];
|
|
17
|
+
}
|
|
18
|
+
throw new Error('Invalid gifenc module shape');
|
|
19
|
+
}
|
|
20
|
+
const GIFENC = resolveGifencRuntime(gifencModule);
|
|
21
|
+
export function createGifEncoder(options) {
|
|
22
|
+
return GIFENC.GIFEncoder(options);
|
|
23
|
+
}
|
|
24
|
+
export function applyGifPalette(rgba, palette, format) {
|
|
25
|
+
return GIFENC.applyPalette(rgba, palette, format);
|
|
26
|
+
}
|
|
27
|
+
export function quantizeColors(rgba, maxColors, options) {
|
|
28
|
+
return GIFENC.quantize(rgba, maxColors, options);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=gifenc-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gifenc-runtime.js","sourceRoot":"","sources":["../src/gifenc-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,QAAQ,CAAC;AAuBvC,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;WACZ,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,UAAU;WACzC,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,UAAU;WAC3C,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,UAAU,CAC3C,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACzD,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,MAAM,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;AAElD,MAAM,UAAU,gBAAgB,CAAC,OAA2B;IAC1D,OAAO,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,IAAoC,EACpC,OAAuB,EACvB,MAAsB;IAEtB,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,IAAoC,EACpC,SAAiB,EACjB,OAAyB;IAEzB,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,14 +8,17 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @packageDocumentation
|
|
10
10
|
*/
|
|
11
|
-
import type { BijouContext
|
|
11
|
+
import type { BijouContext } from '@flyingrobots/bijou';
|
|
12
12
|
import { type App, type RunOptions } from '@flyingrobots/bijou-tui';
|
|
13
|
+
import type { CreateNodeContextOptions, InitDefaultContextOptions } from './options.js';
|
|
13
14
|
/** Re-export the Node.js {@link RuntimePort} factory. */
|
|
14
15
|
export { nodeRuntime, detectRefreshRate } from './runtime.js';
|
|
15
16
|
/** Re-export the Node.js {@link IOPort} factory. */
|
|
16
|
-
export { nodeIO, scopedNodeIO, ScopedNodeIOError, type ScopedNodeIO, type ScopedNodeIOOptions, } from './io.js';
|
|
17
|
+
export { nodeIO, scopedNodeIO, ScopedNodeIOError, type ScopedNodeIO, type ScopedNodeIOOptions, type NodeIOOptions, type NodeWriteStream, } from './io.js';
|
|
17
18
|
/** Re-export the Chalk-based {@link StylePort} factory and its options type. */
|
|
18
19
|
export { chalkStyle, type ChalkStyleOptions } from './style.js';
|
|
20
|
+
export type { CreateNodeContextOptions, InitDefaultContextOptions, NodeThemeEntry, NodeThemeMode, NodeThemeOptions, } from './options.js';
|
|
21
|
+
export { createNodeContext } from './node-context.js';
|
|
19
22
|
/** Re-export Worker utilities for multi-threaded applications. */
|
|
20
23
|
export { isBijouWorker, runInWorker, sendToMain, startWorkerApp, type RunWorkerOptions } from './worker/worker.js';
|
|
21
24
|
export { recordDemoGif, rasterizeSurface, writeSurfaceGif, type NativeDemoSpec, type RecorderResult, type SurfaceGifOptions, } from './recorder.js';
|
|
@@ -34,61 +37,10 @@ export declare class BijouBootstrapError extends Error {
|
|
|
34
37
|
*/
|
|
35
38
|
constructor(reason: string, hint: string, cause?: unknown);
|
|
36
39
|
}
|
|
37
|
-
/** Theme-selection options for Node-hosted context creation. */
|
|
38
|
-
export interface NodeThemeEntry {
|
|
39
|
-
/** Stable selection id for env/config or app-owned override state. */
|
|
40
|
-
readonly id: string;
|
|
41
|
-
/** Theme value associated with this entry. */
|
|
42
|
-
readonly theme: Theme;
|
|
43
|
-
/**
|
|
44
|
-
* Optional light/dark hint used by automatic selection.
|
|
45
|
-
*
|
|
46
|
-
* When omitted, `id === "light"` and `id === "dark"` are treated as the
|
|
47
|
-
* corresponding scheme.
|
|
48
|
-
*/
|
|
49
|
-
readonly scheme?: ColorScheme;
|
|
50
|
-
}
|
|
51
|
-
/** Host-level theme mode for automatic selection. */
|
|
52
|
-
export type NodeThemeMode = 'auto' | ColorScheme;
|
|
53
|
-
/** Theme-selection options for Node-hosted context creation. */
|
|
54
|
-
export interface NodeThemeOptions {
|
|
55
|
-
/**
|
|
56
|
-
* Explicit fallback theme object to use for this host context.
|
|
57
|
-
*
|
|
58
|
-
* This wins whenever the selected env var does not point at a known preset or
|
|
59
|
-
* a valid DTCG JSON file.
|
|
60
|
-
*/
|
|
61
|
-
theme?: Theme;
|
|
62
|
-
/** Named preset themes available to env-var selection. */
|
|
63
|
-
presets?: Record<string, Theme>;
|
|
64
|
-
/** Environment variable name that selects a preset or JSON theme path. */
|
|
65
|
-
envVar?: string;
|
|
66
|
-
/** Named theme entries available for auto-selection or app-owned overrides. */
|
|
67
|
-
themes?: readonly NodeThemeEntry[];
|
|
68
|
-
/** Automatic or forced light/dark selection mode for `themes`. */
|
|
69
|
-
themeMode?: NodeThemeMode;
|
|
70
|
-
/** Explicit theme-entry id override that wins over env-driven selection. */
|
|
71
|
-
themeOverride?: string;
|
|
72
|
-
}
|
|
73
|
-
/** Options for {@link createNodeContext}. */
|
|
74
|
-
export type CreateNodeContextOptions = NodeThemeOptions;
|
|
75
|
-
/** Options for {@link initDefaultContext}. */
|
|
76
|
-
export type InitDefaultContextOptions = NodeThemeOptions;
|
|
77
40
|
/** Options for {@link startApp}. */
|
|
78
|
-
export type StartAppOptions<M = unknown> = RunOptions<M> &
|
|
41
|
+
export type StartAppOptions<M = unknown> = RunOptions<M> & CreateNodeContextOptions;
|
|
79
42
|
/** Test-only helper that restores the Node ambient-context initializer after resets. */
|
|
80
43
|
export declare function _registerDefaultContextInitializerForTesting(): void;
|
|
81
|
-
/**
|
|
82
|
-
* Create a {@link BijouContext} wired to Node.js adapters.
|
|
83
|
-
*
|
|
84
|
-
* Assembles {@link nodeRuntime}, {@link nodeIO}, and {@link chalkStyle}
|
|
85
|
-
* into a single context via `createBijou`. Automatically respects the
|
|
86
|
-
* `NO_COLOR` environment variable by passing it through to the style
|
|
87
|
-
* adapter.
|
|
88
|
-
*
|
|
89
|
-
* @returns A fresh {@link BijouContext} backed by the current Node.js process.
|
|
90
|
-
*/
|
|
91
|
-
export declare function createNodeContext(options?: CreateNodeContextOptions): BijouContext;
|
|
92
44
|
/**
|
|
93
45
|
* Reset the initialization guard.
|
|
94
46
|
*
|
|
@@ -100,8 +52,7 @@ export declare function _resetInitializedForTesting(): void;
|
|
|
100
52
|
* Initialize and register the global default {@link BijouContext}.
|
|
101
53
|
*
|
|
102
54
|
* On the first call, creates a Node.js context via {@link createNodeContext}
|
|
103
|
-
* and registers it with `setDefaultContext`
|
|
104
|
-
* omitting the optional `ctx` parameter automatically use it.
|
|
55
|
+
* and registers it with `setDefaultContext` for ambient `ctx` use.
|
|
105
56
|
*
|
|
106
57
|
* Subsequent calls return a fresh (unregistered) context without
|
|
107
58
|
* overwriting the global default.
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMxD,OAAO,EAAO,KAAK,GAAG,EAAE,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAEzE,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,cAAc,CAAC;AAEtB,yDAAyD;AACzD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC9D,oDAAoD;AACpD,OAAO,EACL,MAAM,EACN,YAAY,EACZ,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,eAAe,GACrB,MAAM,SAAS,CAAC;AACjB,gFAAgF;AAChF,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAChE,YAAY,EACV,wBAAwB,EACxB,yBAAyB,EACzB,cAAc,EACd,aAAa,EACb,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,kEAAkE;AAClE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACnH,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,iBAAiB,GACvB,MAAM,eAAe,CAAC;AAEvB,iEAAiE;AACjE,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,6CAA6C;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,kDAAkD;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1D,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhC;;;;OAIG;gBACS,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAS1D;AAED,oCAAoC;AACpC,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,wBAAwB,CAAC;AAUpF,wFAAwF;AACxF,wBAAgB,4CAA4C,IAAI,IAAI,CAEnE;AAUD;;;;;GAKG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,yBAA8B,GAAG,YAAY,CA8CxF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,QAAQ,CAAC,KAAK,EAAE,CAAC,EACrC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAClB,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC,CA8Cf"}
|
package/dist/index.js
CHANGED
|
@@ -8,21 +8,19 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @packageDocumentation
|
|
10
10
|
*/
|
|
11
|
-
import {
|
|
11
|
+
import { resolveSafeCtx, setDefaultContext, setDefaultContextInitializer, } from '@flyingrobots/bijou';
|
|
12
12
|
import { run } from '@flyingrobots/bijou-tui';
|
|
13
|
-
import {
|
|
14
|
-
import { nodeIO } from './io.js';
|
|
15
|
-
import { chalkStyle } from './style.js';
|
|
13
|
+
import { createNodeContext } from './node-context.js';
|
|
16
14
|
/** Re-export the Node.js {@link RuntimePort} factory. */
|
|
17
15
|
export { nodeRuntime, detectRefreshRate } from './runtime.js';
|
|
18
16
|
/** Re-export the Node.js {@link IOPort} factory. */
|
|
19
17
|
export { nodeIO, scopedNodeIO, ScopedNodeIOError, } from './io.js';
|
|
20
18
|
/** Re-export the Chalk-based {@link StylePort} factory and its options type. */
|
|
21
19
|
export { chalkStyle } from './style.js';
|
|
20
|
+
export { createNodeContext } from './node-context.js';
|
|
22
21
|
/** Re-export Worker utilities for multi-threaded applications. */
|
|
23
22
|
export { isBijouWorker, runInWorker, sendToMain, startWorkerApp } from './worker/worker.js';
|
|
24
23
|
export { recordDemoGif, rasterizeSurface, writeSurfaceGif, } from './recorder.js';
|
|
25
|
-
const DISABLED_THEME_ENV_VAR = '__BIJOU_THEME_DISABLED__';
|
|
26
24
|
/** Structured bootstrap failure for Node host initialization. */
|
|
27
25
|
export class BijouBootstrapError extends Error {
|
|
28
26
|
/** Human-readable reason for the failure. */
|
|
@@ -47,115 +45,12 @@ export class BijouBootstrapError extends Error {
|
|
|
47
45
|
}
|
|
48
46
|
}
|
|
49
47
|
function isSelfRunningApp(app) {
|
|
50
|
-
return typeof app.run === 'function';
|
|
51
|
-
}
|
|
52
|
-
function inferThemeEntryScheme(entry) {
|
|
53
|
-
if (entry.scheme !== undefined)
|
|
54
|
-
return entry.scheme;
|
|
55
|
-
if (entry.id === 'light' || entry.id === 'dark')
|
|
56
|
-
return entry.id;
|
|
57
|
-
return undefined;
|
|
58
|
-
}
|
|
59
|
-
function mergeNodeThemePresets(options) {
|
|
60
|
-
if (options.themes === undefined || options.themes.length === 0) {
|
|
61
|
-
return options.presets;
|
|
62
|
-
}
|
|
63
|
-
const merged = { ...(options.presets ?? {}) };
|
|
64
|
-
for (const entry of options.themes) {
|
|
65
|
-
merged[entry.id] = entry.theme;
|
|
66
|
-
}
|
|
67
|
-
return merged;
|
|
68
|
-
}
|
|
69
|
-
function resolveRequestedColorScheme(runtime, options) {
|
|
70
|
-
const mode = options.themeMode ?? 'auto';
|
|
71
|
-
return mode === 'auto' ? detectColorScheme(runtime) : mode;
|
|
72
|
-
}
|
|
73
|
-
function resolveAutomaticThemeEntry(options, targetScheme) {
|
|
74
|
-
if (options.themes === undefined || options.themes.length === 0) {
|
|
75
|
-
return undefined;
|
|
76
|
-
}
|
|
77
|
-
const byScheme = options.themes.find((entry) => inferThemeEntryScheme(entry) === targetScheme);
|
|
78
|
-
if (byScheme !== undefined)
|
|
79
|
-
return byScheme;
|
|
80
|
-
const byId = options.themes.find((entry) => entry.id === targetScheme);
|
|
81
|
-
if (byId !== undefined)
|
|
82
|
-
return byId;
|
|
83
|
-
return options.themes[0];
|
|
84
|
-
}
|
|
85
|
-
function resolveNodeThemeSelection(runtime, options) {
|
|
86
|
-
const colorScheme = resolveRequestedColorScheme(runtime, options);
|
|
87
|
-
const presets = mergeNodeThemePresets(options);
|
|
88
|
-
const envVar = options.envVar;
|
|
89
|
-
if (options.themeOverride !== undefined) {
|
|
90
|
-
const match = options.themes?.find((entry) => entry.id === options.themeOverride);
|
|
91
|
-
if (match !== undefined) {
|
|
92
|
-
return {
|
|
93
|
-
fallbackTheme: match.theme,
|
|
94
|
-
colorScheme: inferThemeEntryScheme(match) ?? colorScheme,
|
|
95
|
-
envVar: DISABLED_THEME_ENV_VAR,
|
|
96
|
-
presets,
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
const selectionEnvVar = envVar ?? 'BIJOU_THEME';
|
|
101
|
-
const envSelection = runtime.env(selectionEnvVar);
|
|
102
|
-
if (envSelection !== undefined) {
|
|
103
|
-
const envThemeEntry = options.themes?.find((entry) => entry.id === envSelection);
|
|
104
|
-
if (envThemeEntry !== undefined) {
|
|
105
|
-
return {
|
|
106
|
-
fallbackTheme: envThemeEntry.theme,
|
|
107
|
-
colorScheme: inferThemeEntryScheme(envThemeEntry) ?? colorScheme,
|
|
108
|
-
envVar: DISABLED_THEME_ENV_VAR,
|
|
109
|
-
presets,
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
return {
|
|
113
|
-
fallbackTheme: options.theme ?? resolveAutomaticThemeEntry(options, colorScheme)?.theme,
|
|
114
|
-
colorScheme,
|
|
115
|
-
envVar,
|
|
116
|
-
presets,
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
const automaticThemeEntry = resolveAutomaticThemeEntry(options, colorScheme);
|
|
120
|
-
return {
|
|
121
|
-
fallbackTheme: automaticThemeEntry?.theme ?? options.theme,
|
|
122
|
-
colorScheme: automaticThemeEntry != null
|
|
123
|
-
? (inferThemeEntryScheme(automaticThemeEntry) ?? colorScheme)
|
|
124
|
-
: colorScheme,
|
|
125
|
-
envVar,
|
|
126
|
-
presets,
|
|
127
|
-
};
|
|
48
|
+
return 'run' in app && typeof app.run === 'function';
|
|
128
49
|
}
|
|
129
50
|
/** Test-only helper that restores the Node ambient-context initializer after resets. */
|
|
130
51
|
export function _registerDefaultContextInitializerForTesting() {
|
|
131
52
|
setDefaultContextInitializer(() => createNodeContext());
|
|
132
53
|
}
|
|
133
|
-
/**
|
|
134
|
-
* Create a {@link BijouContext} wired to Node.js adapters.
|
|
135
|
-
*
|
|
136
|
-
* Assembles {@link nodeRuntime}, {@link nodeIO}, and {@link chalkStyle}
|
|
137
|
-
* into a single context via `createBijou`. Automatically respects the
|
|
138
|
-
* `NO_COLOR` environment variable by passing it through to the style
|
|
139
|
-
* adapter.
|
|
140
|
-
*
|
|
141
|
-
* @returns A fresh {@link BijouContext} backed by the current Node.js process.
|
|
142
|
-
*/
|
|
143
|
-
export function createNodeContext(options = {}) {
|
|
144
|
-
const runtime = nodeRuntime();
|
|
145
|
-
const noColor = runtime.env('NO_COLOR') !== undefined;
|
|
146
|
-
const selection = resolveNodeThemeSelection(runtime, options);
|
|
147
|
-
// Force level 3 (truecolor) if NO_COLOR is not set,
|
|
148
|
-
// as the user is explicitly requesting a rich dashboard experience.
|
|
149
|
-
return createBijou({
|
|
150
|
-
runtime,
|
|
151
|
-
io: nodeIO(),
|
|
152
|
-
style: chalkStyle({ noColor, level: noColor ? 0 : 3 }),
|
|
153
|
-
theme: selection.fallbackTheme,
|
|
154
|
-
presets: selection.presets,
|
|
155
|
-
envVar: selection.envVar,
|
|
156
|
-
colorScheme: selection.colorScheme,
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
54
|
_registerDefaultContextInitializerForTesting();
|
|
160
55
|
/**
|
|
161
56
|
* Guard flag ensuring {@link initDefaultContext} only registers the global
|
|
@@ -175,8 +70,7 @@ export function _resetInitializedForTesting() {
|
|
|
175
70
|
* Initialize and register the global default {@link BijouContext}.
|
|
176
71
|
*
|
|
177
72
|
* On the first call, creates a Node.js context via {@link createNodeContext}
|
|
178
|
-
* and registers it with `setDefaultContext`
|
|
179
|
-
* omitting the optional `ctx` parameter automatically use it.
|
|
73
|
+
* and registers it with `setDefaultContext` for ambient `ctx` use.
|
|
180
74
|
*
|
|
181
75
|
* Subsequent calls return a fresh (unregistered) context without
|
|
182
76
|
* overwriting the global default.
|
|
@@ -191,13 +85,13 @@ export function initDefaultContext(options = {}) {
|
|
|
191
85
|
throw new BijouBootstrapError('stdout reported zero columns/rows', 'stdout is not a TTY — use pipe mode or redirect to a file, or run in a real terminal.');
|
|
192
86
|
}
|
|
193
87
|
try {
|
|
194
|
-
const
|
|
88
|
+
const hasExplicitOptions = options.theme !== undefined
|
|
195
89
|
|| options.presets !== undefined
|
|
196
90
|
|| options.envVar !== undefined
|
|
197
91
|
|| options.themes !== undefined
|
|
198
92
|
|| options.themeMode !== undefined
|
|
199
|
-
|| options.themeOverride !== undefined;
|
|
200
|
-
if (!initialized && !
|
|
93
|
+
|| options.themeOverride !== undefined || options.io !== undefined || options.nodeIO !== undefined;
|
|
94
|
+
if (!initialized && !hasExplicitOptions) {
|
|
201
95
|
const existing = resolveSafeCtx();
|
|
202
96
|
if (existing != null) {
|
|
203
97
|
initialized = true;
|
|
@@ -238,7 +132,7 @@ export function initDefaultContext(options = {}) {
|
|
|
238
132
|
* @param options - Runtime options forwarded to {@link run}.
|
|
239
133
|
*/
|
|
240
134
|
export async function startApp(app, options) {
|
|
241
|
-
const { ctx: explicitCtx, theme, presets, envVar, themes, themeMode, themeOverride, ...runOptions } = options ?? {};
|
|
135
|
+
const { ctx: explicitCtx, theme, presets, envVar, themes, themeMode, themeOverride, io: ioOverride, nodeIO: nodeIOOptions, ...runOptions } = options ?? {};
|
|
242
136
|
let ctx = explicitCtx;
|
|
243
137
|
if (!ctx) {
|
|
244
138
|
if (theme !== undefined
|
|
@@ -246,8 +140,19 @@ export async function startApp(app, options) {
|
|
|
246
140
|
|| envVar !== undefined
|
|
247
141
|
|| themes !== undefined
|
|
248
142
|
|| themeMode !== undefined
|
|
249
|
-
|| themeOverride !== undefined
|
|
250
|
-
|
|
143
|
+
|| themeOverride !== undefined
|
|
144
|
+
|| ioOverride !== undefined
|
|
145
|
+
|| nodeIOOptions !== undefined) {
|
|
146
|
+
ctx = createNodeContext({
|
|
147
|
+
theme,
|
|
148
|
+
presets,
|
|
149
|
+
envVar,
|
|
150
|
+
themes,
|
|
151
|
+
themeMode,
|
|
152
|
+
themeOverride,
|
|
153
|
+
io: ioOverride,
|
|
154
|
+
nodeIO: nodeIOOptions,
|
|
155
|
+
});
|
|
251
156
|
setDefaultContext(ctx);
|
|
252
157
|
initialized = true;
|
|
253
158
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { describe, it, expect, expectTypeOf, afterEach, beforeEach, vi } from 'vitest';
|
|
2
|
+
import { BijouBootstrapError, createNodeContext, initDefaultContext, startApp, type StartAppOptions, _resetInitializedForTesting, _registerDefaultContextInitializerForTesting } from './index.js';
|
|
3
|
+
import { getDefaultContext, setDefaultContext, stringToSurface, type Surface, type Theme } from '@flyingrobots/bijou';
|
|
4
|
+
import { _resetDefaultContextForTesting, createTestContext } from '@flyingrobots/bijou/adapters/test';
|
|
5
|
+
import { run, type App, type RunOptions } from '@flyingrobots/bijou-tui';
|
|
6
|
+
export { _registerDefaultContextInitializerForTesting, _resetDefaultContextForTesting, _resetInitializedForTesting, afterEach, beforeEach, BijouBootstrapError, createNodeContext, createTestContext, describe, expect, expectTypeOf, getDefaultContext, initDefaultContext, it, run, setDefaultContext, startApp, stringToSurface, vi, };
|
|
7
|
+
export type { App, RunOptions, StartAppOptions, Surface, Theme };
|
|
8
|
+
export { CUSTOM_ID_THEME_SET, DARK_THEME, LIGHT_THEME, TEST_THEME, TEST_THEME_SET, makeTheme, textSurface, withStdoutSize, } from './index.test-support.part01.js';
|
|
9
|
+
export type { Opts } from './index.test-support.part01.js';
|
|
10
|
+
export { LEGACY_TEST_THEME, UNUSED_THEME } from './index.test-support.part02.js';
|
|
11
|
+
//# sourceMappingURL=index.test-support.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test-support.d.ts","sourceRoot":"","sources":["../src/index.test-support.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEvF,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,QAAQ,EACR,KAAK,eAAe,EACpB,2BAA2B,EAC3B,4CAA4C,EAC7C,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAE,KAAK,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAEtH,OAAO,EAAE,8BAA8B,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtG,OAAO,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAEzE,OAAO,EACL,4CAA4C,EAC5C,8BAA8B,EAC9B,2BAA2B,EAC3B,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,EAAE,EACF,GAAG,EACH,iBAAiB,EACjB,QAAQ,EACR,eAAe,EACf,EAAE,GACH,CAAC;AAEF,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjE,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,SAAS,EACT,WAAW,EACX,cAAc,GACf,MAAM,gCAAgC,CAAC;AAExC,YAAY,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { describe, it, expect, expectTypeOf, afterEach, beforeEach, vi } from 'vitest';
|
|
2
|
+
import { BijouBootstrapError, createNodeContext, initDefaultContext, startApp, _resetInitializedForTesting, _registerDefaultContextInitializerForTesting, } from './index.js';
|
|
3
|
+
import { getDefaultContext, setDefaultContext, stringToSurface } from '@flyingrobots/bijou';
|
|
4
|
+
import { _resetDefaultContextForTesting, createTestContext } from '@flyingrobots/bijou/adapters/test';
|
|
5
|
+
import { run } from '@flyingrobots/bijou-tui';
|
|
6
|
+
export { _registerDefaultContextInitializerForTesting, _resetDefaultContextForTesting, _resetInitializedForTesting, afterEach, beforeEach, BijouBootstrapError, createNodeContext, createTestContext, describe, expect, expectTypeOf, getDefaultContext, initDefaultContext, it, run, setDefaultContext, startApp, stringToSurface, vi, };
|
|
7
|
+
export { CUSTOM_ID_THEME_SET, DARK_THEME, LIGHT_THEME, TEST_THEME, TEST_THEME_SET, makeTheme, textSurface, withStdoutSize, } from './index.test-support.part01.js';
|
|
8
|
+
export { LEGACY_TEST_THEME, UNUSED_THEME } from './index.test-support.part02.js';
|
|
9
|
+
//# sourceMappingURL=index.test-support.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test-support.js","sourceRoot":"","sources":["../src/index.test-support.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEvF,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,QAAQ,EAER,2BAA2B,EAC3B,4CAA4C,GAC7C,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAA4B,MAAM,qBAAqB,CAAC;AAEtH,OAAO,EAAE,8BAA8B,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtG,OAAO,EAAE,GAAG,EAA6B,MAAM,yBAAyB,CAAC;AAEzE,OAAO,EACL,4CAA4C,EAC5C,8BAA8B,EAC9B,2BAA2B,EAC3B,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,EAAE,EACF,GAAG,EACH,iBAAiB,EACjB,QAAQ,EACR,eAAe,EACf,EAAE,GACH,CAAC;AAIF,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,SAAS,EACT,WAAW,EACX,cAAc,GACf,MAAM,gCAAgC,CAAC;AAIxC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { StartAppOptions } from './index.js';
|
|
2
|
+
import type { Surface, Theme } from '@flyingrobots/bijou';
|
|
3
|
+
type Opts<M> = StartAppOptions<M>;
|
|
4
|
+
declare function textSurface(text: string): Surface;
|
|
5
|
+
declare function makeTheme(name: string, primaryHex: string, primaryBg: string, accentHex?: string): Theme;
|
|
6
|
+
declare const TEST_THEME: Theme;
|
|
7
|
+
declare const LIGHT_THEME: Theme;
|
|
8
|
+
declare const DARK_THEME: Theme;
|
|
9
|
+
declare const TEST_THEME_SET: readonly [{
|
|
10
|
+
readonly id: "light";
|
|
11
|
+
readonly theme: Theme<import("@flyingrobots/bijou").BaseStatusKey, import("@flyingrobots/bijou").BaseUiKey, import("@flyingrobots/bijou").BaseGradientKey>;
|
|
12
|
+
}, {
|
|
13
|
+
readonly id: "dark";
|
|
14
|
+
readonly theme: Theme<import("@flyingrobots/bijou").BaseStatusKey, import("@flyingrobots/bijou").BaseUiKey, import("@flyingrobots/bijou").BaseGradientKey>;
|
|
15
|
+
}];
|
|
16
|
+
declare const CUSTOM_ID_THEME_SET: readonly [{
|
|
17
|
+
readonly id: "sunrise";
|
|
18
|
+
readonly scheme: "light";
|
|
19
|
+
readonly theme: Theme<import("@flyingrobots/bijou").BaseStatusKey, import("@flyingrobots/bijou").BaseUiKey, import("@flyingrobots/bijou").BaseGradientKey>;
|
|
20
|
+
}, {
|
|
21
|
+
readonly id: "midnight";
|
|
22
|
+
readonly scheme: "dark";
|
|
23
|
+
readonly theme: Theme<import("@flyingrobots/bijou").BaseStatusKey, import("@flyingrobots/bijou").BaseUiKey, import("@flyingrobots/bijou").BaseGradientKey>;
|
|
24
|
+
}];
|
|
25
|
+
declare function withStdoutSize<T>(columns: number | undefined, rows: number | undefined, runTest: () => T): T;
|
|
26
|
+
export { CUSTOM_ID_THEME_SET, DARK_THEME, LIGHT_THEME, makeTheme, TEST_THEME, TEST_THEME_SET, textSurface, withStdoutSize, };
|
|
27
|
+
export type { Opts };
|
|
28
|
+
//# sourceMappingURL=index.test-support.part01.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test-support.part01.d.ts","sourceRoot":"","sources":["../src/index.test-support.part01.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE1D,KAAK,IAAI,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;AAElC,iBAAS,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG1C;AAED,iBAAS,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,SAAY,GAAG,KAAK,CAyDpG;AAED,QAAA,MAAM,UAAU,EAAE,KAAqD,CAAC;AAExE,QAAA,MAAM,WAAW,EAAE,KAAiE,CAAC;AAErF,QAAA,MAAM,UAAU,EAAE,KAAgE,CAAC;AAEnF,QAAA,MAAM,cAAc;;;;;;EAGV,CAAC;AAEX,QAAA,MAAM,mBAAmB;;;;;;;;EAGf,CAAC;AAEX,iBAAS,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAWrG;AAED,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,SAAS,EACT,UAAU,EACV,cAAc,EACd,WAAW,EACX,cAAc,GACf,CAAC;AAEF,YAAY,EAAE,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { stringToSurface } from '@flyingrobots/bijou';
|
|
2
|
+
function textSurface(text) {
|
|
3
|
+
const lines = text.split('\n');
|
|
4
|
+
return stringToSurface(text, Math.max(1, ...lines.map((line) => line.length)), Math.max(1, lines.length));
|
|
5
|
+
}
|
|
6
|
+
function makeTheme(name, primaryHex, primaryBg, accentHex = '#c084fc') {
|
|
7
|
+
return {
|
|
8
|
+
name,
|
|
9
|
+
status: {
|
|
10
|
+
success: { hex: '#22c55e' },
|
|
11
|
+
error: { hex: '#ef4444' },
|
|
12
|
+
warning: { hex: '#f59e0b' },
|
|
13
|
+
info: { hex: '#38bdf8' },
|
|
14
|
+
pending: { hex: '#64748b', modifiers: ['dim'] },
|
|
15
|
+
active: { hex: '#38bdf8' },
|
|
16
|
+
muted: { hex: '#64748b', modifiers: ['dim', 'strikethrough'] },
|
|
17
|
+
},
|
|
18
|
+
semantic: {
|
|
19
|
+
success: { hex: '#22c55e' },
|
|
20
|
+
error: { hex: '#ef4444' },
|
|
21
|
+
warning: { hex: '#f59e0b' },
|
|
22
|
+
info: { hex: '#38bdf8' },
|
|
23
|
+
accent: { hex: accentHex },
|
|
24
|
+
muted: { hex: '#94a3b8', modifiers: ['dim'] },
|
|
25
|
+
primary: { hex: primaryHex, modifiers: ['bold'] },
|
|
26
|
+
},
|
|
27
|
+
gradient: {
|
|
28
|
+
brand: [
|
|
29
|
+
{ pos: 0, color: [56, 189, 248] },
|
|
30
|
+
{ pos: 1, color: [192, 132, 252] },
|
|
31
|
+
],
|
|
32
|
+
progress: [
|
|
33
|
+
{ pos: 0, color: [34, 197, 94] },
|
|
34
|
+
{ pos: 1, color: [56, 189, 248] },
|
|
35
|
+
],
|
|
36
|
+
},
|
|
37
|
+
border: {
|
|
38
|
+
primary: { hex: '#38bdf8' },
|
|
39
|
+
secondary: { hex: accentHex },
|
|
40
|
+
success: { hex: '#22c55e' },
|
|
41
|
+
warning: { hex: '#f59e0b' },
|
|
42
|
+
error: { hex: '#ef4444' },
|
|
43
|
+
muted: { hex: '#64748b' },
|
|
44
|
+
},
|
|
45
|
+
ui: {
|
|
46
|
+
cursor: { hex: '#38bdf8' },
|
|
47
|
+
focusGutter: { hex: accentHex },
|
|
48
|
+
scrollThumb: { hex: '#38bdf8' },
|
|
49
|
+
scrollTrack: { hex: '#334155' },
|
|
50
|
+
sectionHeader: { hex: primaryHex, modifiers: ['bold'] },
|
|
51
|
+
logo: { hex: '#38bdf8' },
|
|
52
|
+
tableHeader: { hex: primaryHex },
|
|
53
|
+
trackEmpty: { hex: '#1e293b' },
|
|
54
|
+
},
|
|
55
|
+
surface: {
|
|
56
|
+
primary: { hex: primaryHex, bg: primaryBg },
|
|
57
|
+
secondary: { hex: '#e2e8f0', bg: '#1e293b' },
|
|
58
|
+
elevated: { hex: primaryHex, bg: '#334155' },
|
|
59
|
+
overlay: { hex: primaryHex, bg: primaryBg },
|
|
60
|
+
muted: { hex: '#94a3b8', bg: '#020617' },
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
const TEST_THEME = makeTheme('test-theme', '#f8fafc', '#0f172a');
|
|
65
|
+
const LIGHT_THEME = makeTheme('light-theme', '#0f172a', '#f8fafc', '#2563eb');
|
|
66
|
+
const DARK_THEME = makeTheme('dark-theme', '#f8fafc', '#020617', '#c084fc');
|
|
67
|
+
const TEST_THEME_SET = [
|
|
68
|
+
{ id: 'light', theme: LIGHT_THEME },
|
|
69
|
+
{ id: 'dark', theme: DARK_THEME },
|
|
70
|
+
];
|
|
71
|
+
const CUSTOM_ID_THEME_SET = [
|
|
72
|
+
{ id: 'sunrise', scheme: 'light', theme: LIGHT_THEME },
|
|
73
|
+
{ id: 'midnight', scheme: 'dark', theme: DARK_THEME },
|
|
74
|
+
];
|
|
75
|
+
function withStdoutSize(columns, rows, runTest) {
|
|
76
|
+
const originalColumns = process.stdout.columns;
|
|
77
|
+
const originalRows = process.stdout.rows;
|
|
78
|
+
Object.defineProperty(process.stdout, 'columns', { configurable: true, value: columns });
|
|
79
|
+
Object.defineProperty(process.stdout, 'rows', { configurable: true, value: rows });
|
|
80
|
+
try {
|
|
81
|
+
return runTest();
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
Object.defineProperty(process.stdout, 'columns', { configurable: true, value: originalColumns });
|
|
85
|
+
Object.defineProperty(process.stdout, 'rows', { configurable: true, value: originalRows });
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
export { CUSTOM_ID_THEME_SET, DARK_THEME, LIGHT_THEME, makeTheme, TEST_THEME, TEST_THEME_SET, textSurface, withStdoutSize, };
|
|
89
|
+
//# sourceMappingURL=index.test-support.part01.js.map
|