@keload/node-red-dxp 1.4.0 → 1.5.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.
@@ -1,46 +1,3993 @@
1
1
  #!/usr/bin/env node
2
- 'use strict';var perf_hooks=require('perf_hooks'),ne=require('process'),commander=require('commander'),consola=require('consola'),M=require('fs'),q=require('path'),cosmiconfig=require('cosmiconfig'),glob=require('glob'),radash=require('radash'),O=require('fs/promises'),we=require('esbuild'),htmlMinifierTerser=require('html-minifier-terser'),Ie=require('@fullhuman/postcss-purgecss'),Oe=require('autoprefixer'),ke=require('cssnano'),U=require('postcss'),z=require('sass'),He=require('tailwindcss'),_e=require('prettyjson'),ze=require('handlebars'),et=require('browser-sync'),tt=require('chokidar'),te=require('nodemon');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var ne__namespace=/*#__PURE__*/_interopNamespace(ne);var M__default=/*#__PURE__*/_interopDefault(M);var q__default=/*#__PURE__*/_interopDefault(q);var O__default=/*#__PURE__*/_interopDefault(O);var we__default=/*#__PURE__*/_interopDefault(we);var Ie__default=/*#__PURE__*/_interopDefault(Ie);var Oe__default=/*#__PURE__*/_interopDefault(Oe);var ke__default=/*#__PURE__*/_interopDefault(ke);var U__default=/*#__PURE__*/_interopDefault(U);var z__namespace=/*#__PURE__*/_interopNamespace(z);var He__default=/*#__PURE__*/_interopDefault(He);var _e__default=/*#__PURE__*/_interopDefault(_e);var ze__default=/*#__PURE__*/_interopDefault(ze);var et__default=/*#__PURE__*/_interopDefault(et);var tt__default=/*#__PURE__*/_interopDefault(tt);var te__default=/*#__PURE__*/_interopDefault(te);var ae=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var A={name:"@keload/node-red-dxp",version:"1.3.2",description:"",type:"module",scripts:{build:"tsup",watch:"tsup --watch",format:"pnpm biome format",lint:"pnpm biome lint","lint:check":"pnpm biome check",release:"pnpm release-it","release:test":"pnpm release-it --dry-run","docs:dev":"vitepress dev docs","docs:build":"vitepress build docs","docs:preview":"vitepress preview docs"},publishConfig:{access:"public"},bin:{"node-red-dxp":"./dist/cli/index.cjs"},exports:{".":{import:"./dist/index.js",require:"./dist/index.cjs"},"./builder":{import:"./dist/builder/index.js",require:"./dist/builder/index.cjs"},"./editor":{import:"./dist/editor/index.js",require:"./dist/editor/index.cjs"},"./package.json":"./package.json"},keywords:[],author:"Cl\xE9ment BERARD <contact@berard.dev>",license:"MIT",repository:{type:"git",url:"https://github.com/clement-berard/node-red-dxp.git"},bugs:{url:"https://github.com/clement-berard/node-red-dxp/issues"},homepage:"https://github.com/clement-berard/node-red-dxp",devDependencies:{"@biomejs/biome":"1.9.4","@release-it/conventional-changelog":"9.0.3","@types/handlebars":"4.1.0","release-it":"17.10.0",tsup:"8.3.5",tsx:"4.19.2",typescript:"5.6.3",vitepress:"1.5.0"},dependencies:{"@fullhuman/postcss-purgecss":"^6.0.0","@types/html-minifier-terser":"7.0.2","@types/jquery":"3.5.32","@types/jqueryui":"1.12.23","@types/node-red":"1.3.5","@types/prettyjson":"0.0.33",autoprefixer:"^10.4.20","browser-sync":"3.0.3",chokidar:"4.0.1",commander:"12.1.0",consola:"3.2.3",cosmiconfig:"9.0.0",cssnano:"^7.0.6",esbuild:"0.24.0",glob:"11.0.0",handlebars:"4.7.8","html-minifier-terser":"7.2.0","merge-anything":"6.0.2",nodemon:"3.1.7",postcss:"^8.4.49",prettyjson:"1.2.5",radash:"12.1.0",sass:"1.81.0","solid-js":"1.9.3",tailwindcss:"^3.4.15"},files:["dist"]};function w(t){return Object.prototype.toString.call(t).slice(8,-1)}function g(t){if(w(t)!=="Object")return !1;let e=Object.getPrototypeOf(t);return !!e&&e.constructor===Object&&e===Object.prototype}function P(t){return w(t)==="Symbol"}function H(t,e,r,o){let n={}.propertyIsEnumerable.call(o,e)?"enumerable":"nonenumerable";n==="enumerable"&&(t[e]=r),n==="nonenumerable"&&Object.defineProperty(t,e,{value:r,enumerable:!1,writable:!0,configurable:!0});}function B(t,e,r){if(!g(e))return e;let o={};if(g(t)){let m=Object.getOwnPropertyNames(t),c=Object.getOwnPropertySymbols(t);o=[...m,...c].reduce((a,l)=>{let v=t[l];return (!P(l)&&!Object.getOwnPropertyNames(e).includes(l)||P(l)&&!Object.getOwnPropertySymbols(e).includes(l))&&H(a,l,v,t),a},{});}let n=Object.getOwnPropertyNames(e),i=Object.getOwnPropertySymbols(e);return [...n,...i].reduce((m,c)=>{let a=e[c],l=g(t)?t[c]:void 0;l!==void 0&&g(a)&&(a=B(l,a));let v=a;return H(m,c,v,e),m},o)}function R(t,...e){return e.reduce((r,o)=>B(r,o),t)}var T={libCacheDir:".node-red-dx",srcDir:"src",nodesDirName:"nodes",nodes:{controllerName:"index",editor:{dirName:"editor",htmlName:"index",tsName:"index"}},builder:{outputDir:"dist"},watcher:{nodeRed:{enabled:!0,path:"~/.node-red",url:"http://localhost:1880"}}};var ue="node-red-dx",he=t=>t.replace("@","").replace("/","-");function ge(){let t=cosmiconfig.cosmiconfigSync(ue);try{let e=t.search();return R(T,e?e.config:{})}catch(e){throw console.error("Error while loading configuration",e),e}}var d=ge(),u=process.cwd(),L=JSON.parse(M.readFileSync(`${u}/package.json`,"utf-8")),I=`${u}/${d.srcDir}`,ye=`${u}/resources`,$=`${I}/${d.nodesDirName}`,E=`${u}/${d.libCacheDir}`,xe=`${q__default.default.resolve(__dirname,"..")}`,W=he(L.name);function be(){return glob.globSync(`${$}/*`,{withFileTypes:!0}).map(e=>{let r=e.fullpath(),o=`${r}/${d.nodes.editor.dirName}`,n=r.replace(u,"").slice(1),i=`${n}/${d.nodes.editor.dirName}`,p=glob.globSync(`${o}/**/*.scss`),m=glob.globSync(`${r}/doc.mdx`),c=glob.globSync(`${r}/doc.md`),a=radash.dash(e.name);return {fullEditorPath:o,fullPath:r,name:e.name,pascalName:radash.pascal(e.name),dashName:a,relativeEditorPath:i,relativePath:n,nodeIdentifier:`${W}-${a}`,fullControllerPath:`${r}/${d.nodes.controllerName}.ts`,editor:{tsPath:`${o}/${d.nodes.editor.tsName}.ts`,htmlPath:`${o}/${d.nodes.editor.htmlName}.html`,scssFiles:p},doc:{mdxFiles:m,mdFiles:c}}})}function Ne(){return {currentDir:u,pathSrcDir:I,pathSrcNodesDir:$,additionalResourcesDir:ye,pathDist:`${u}/${d.builder.outputDir}`,currentPackagedDistPath:xe,cacheDirFiles:{controllerIndex:`${E}/controller-index.ts`,editorIndex:`${E}/editor-index.ts`},pathLibCacheDir:E,packageName:L.name,packageNameSlug:W,config:d,resolvedSrcPathsScss:glob.globSync(`${I}/**/*.scss`,{ignore:`${$}/**/*.scss`}),resolvedNodesPaths:glob.globSync(`${$}/*`),listNodesFull:be()}}var s=Ne();var G=`${q__default.default.resolve(__dirname,"..")}`;function C(t){M__default.default.existsSync(t)||M__default.default.mkdirSync(t,{recursive:!0});}async function f(t,e){try{await O__default.default.writeFile(t,e);}catch(r){console.error("Error writing controller index:",r);}}async function J(t){for(let e of t)try{let r=q__default.default.resolve(e),o=await O__default.default.stat(r).catch(()=>null);o!=null&&o.isDirectory()&&await O__default.default.rm(r,{recursive:!0,force:!0});}catch(r){console.error(`Error cleaning path (${e}): ${r}`);}}var S=class{params;constructor(e){this.params={minify:!1,...e};}async getControllerIndexContent(){return `
2
+ 'use strict';
3
+
4
+ var perf_hooks = require('perf_hooks');
5
+ var process6 = require('process');
6
+ var commander = require('commander');
7
+ var os = require('os');
8
+ var tty = require('tty');
9
+ var fs = require('fs');
10
+ var path2 = require('path');
11
+ var cosmiconfig = require('cosmiconfig');
12
+ var glob = require('glob');
13
+ var radash = require('radash');
14
+ var fsPromise = require('fs/promises');
15
+ var esbuild = require('esbuild');
16
+ var htmlMinifierTerser = require('html-minifier-terser');
17
+ var purgeCss = require('@fullhuman/postcss-purgecss');
18
+ var autoprefixer = require('autoprefixer');
19
+ var cssnano = require('cssnano');
20
+ var postcss = require('postcss');
21
+ var sass = require('sass');
22
+ var tailwindcss = require('tailwindcss');
23
+ var consola = require('consola');
24
+ var prettyJson = require('prettyjson');
25
+ var Handlebars = require('handlebars');
26
+ var browserSync = require('browser-sync');
27
+ var chokidar = require('chokidar');
28
+ var nodemon = require('nodemon');
29
+
30
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
31
+
32
+ function _interopNamespace(e) {
33
+ if (e && e.__esModule) return e;
34
+ var n = Object.create(null);
35
+ if (e) {
36
+ Object.keys(e).forEach(function (k) {
37
+ if (k !== 'default') {
38
+ var d = Object.getOwnPropertyDescriptor(e, k);
39
+ Object.defineProperty(n, k, d.get ? d : {
40
+ enumerable: true,
41
+ get: function () { return e[k]; }
42
+ });
43
+ }
44
+ });
45
+ }
46
+ n.default = e;
47
+ return Object.freeze(n);
48
+ }
49
+
50
+ var process6__namespace = /*#__PURE__*/_interopNamespace(process6);
51
+ var os__default = /*#__PURE__*/_interopDefault(os);
52
+ var tty__default = /*#__PURE__*/_interopDefault(tty);
53
+ var fs__default = /*#__PURE__*/_interopDefault(fs);
54
+ var path2__default = /*#__PURE__*/_interopDefault(path2);
55
+ var fsPromise__default = /*#__PURE__*/_interopDefault(fsPromise);
56
+ var esbuild__default = /*#__PURE__*/_interopDefault(esbuild);
57
+ var purgeCss__default = /*#__PURE__*/_interopDefault(purgeCss);
58
+ var autoprefixer__default = /*#__PURE__*/_interopDefault(autoprefixer);
59
+ var cssnano__default = /*#__PURE__*/_interopDefault(cssnano);
60
+ var postcss__default = /*#__PURE__*/_interopDefault(postcss);
61
+ var sass__namespace = /*#__PURE__*/_interopNamespace(sass);
62
+ var tailwindcss__default = /*#__PURE__*/_interopDefault(tailwindcss);
63
+ var prettyJson__default = /*#__PURE__*/_interopDefault(prettyJson);
64
+ var Handlebars__default = /*#__PURE__*/_interopDefault(Handlebars);
65
+ var browserSync__default = /*#__PURE__*/_interopDefault(browserSync);
66
+ var chokidar__default = /*#__PURE__*/_interopDefault(chokidar);
67
+ var nodemon__default = /*#__PURE__*/_interopDefault(nodemon);
68
+
69
+ var __create = Object.create;
70
+ var __defProp = Object.defineProperty;
71
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
72
+ var __getOwnPropNames = Object.getOwnPropertyNames;
73
+ var __getProtoOf = Object.getPrototypeOf;
74
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
75
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
76
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
77
+ }) : x)(function(x) {
78
+ if (typeof require !== "undefined") return require.apply(this, arguments);
79
+ throw Error('Dynamic require of "' + x + '" is not supported');
80
+ });
81
+ var __commonJS = (cb, mod) => function __require2() {
82
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
83
+ };
84
+ var __copyProps = (to, from, except, desc) => {
85
+ if (from && typeof from === "object" || typeof from === "function") {
86
+ for (let key of __getOwnPropNames(from))
87
+ if (!__hasOwnProp.call(to, key) && key !== except)
88
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
89
+ }
90
+ return to;
91
+ };
92
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
93
+ // If the importer is in node compatibility mode or this is not an ESM
94
+ // file that has been converted to a CommonJS file using a Babel-
95
+ // compatible transform (i.e. "__esModule" has not been set), then set
96
+ // "default" to the CommonJS "module.exports" for node compatibility.
97
+ __defProp(target, "default", { value: mod, enumerable: true }) ,
98
+ mod
99
+ ));
100
+
101
+ // node_modules/.pnpm/cli-spinners@2.9.2/node_modules/cli-spinners/spinners.json
102
+ var require_spinners = __commonJS({
103
+ "node_modules/.pnpm/cli-spinners@2.9.2/node_modules/cli-spinners/spinners.json"(exports, module) {
104
+ module.exports = {
105
+ dots: {
106
+ interval: 80,
107
+ frames: [
108
+ "\u280B",
109
+ "\u2819",
110
+ "\u2839",
111
+ "\u2838",
112
+ "\u283C",
113
+ "\u2834",
114
+ "\u2826",
115
+ "\u2827",
116
+ "\u2807",
117
+ "\u280F"
118
+ ]
119
+ },
120
+ dots2: {
121
+ interval: 80,
122
+ frames: [
123
+ "\u28FE",
124
+ "\u28FD",
125
+ "\u28FB",
126
+ "\u28BF",
127
+ "\u287F",
128
+ "\u28DF",
129
+ "\u28EF",
130
+ "\u28F7"
131
+ ]
132
+ },
133
+ dots3: {
134
+ interval: 80,
135
+ frames: [
136
+ "\u280B",
137
+ "\u2819",
138
+ "\u281A",
139
+ "\u281E",
140
+ "\u2816",
141
+ "\u2826",
142
+ "\u2834",
143
+ "\u2832",
144
+ "\u2833",
145
+ "\u2813"
146
+ ]
147
+ },
148
+ dots4: {
149
+ interval: 80,
150
+ frames: [
151
+ "\u2804",
152
+ "\u2806",
153
+ "\u2807",
154
+ "\u280B",
155
+ "\u2819",
156
+ "\u2838",
157
+ "\u2830",
158
+ "\u2820",
159
+ "\u2830",
160
+ "\u2838",
161
+ "\u2819",
162
+ "\u280B",
163
+ "\u2807",
164
+ "\u2806"
165
+ ]
166
+ },
167
+ dots5: {
168
+ interval: 80,
169
+ frames: [
170
+ "\u280B",
171
+ "\u2819",
172
+ "\u281A",
173
+ "\u2812",
174
+ "\u2802",
175
+ "\u2802",
176
+ "\u2812",
177
+ "\u2832",
178
+ "\u2834",
179
+ "\u2826",
180
+ "\u2816",
181
+ "\u2812",
182
+ "\u2810",
183
+ "\u2810",
184
+ "\u2812",
185
+ "\u2813",
186
+ "\u280B"
187
+ ]
188
+ },
189
+ dots6: {
190
+ interval: 80,
191
+ frames: [
192
+ "\u2801",
193
+ "\u2809",
194
+ "\u2819",
195
+ "\u281A",
196
+ "\u2812",
197
+ "\u2802",
198
+ "\u2802",
199
+ "\u2812",
200
+ "\u2832",
201
+ "\u2834",
202
+ "\u2824",
203
+ "\u2804",
204
+ "\u2804",
205
+ "\u2824",
206
+ "\u2834",
207
+ "\u2832",
208
+ "\u2812",
209
+ "\u2802",
210
+ "\u2802",
211
+ "\u2812",
212
+ "\u281A",
213
+ "\u2819",
214
+ "\u2809",
215
+ "\u2801"
216
+ ]
217
+ },
218
+ dots7: {
219
+ interval: 80,
220
+ frames: [
221
+ "\u2808",
222
+ "\u2809",
223
+ "\u280B",
224
+ "\u2813",
225
+ "\u2812",
226
+ "\u2810",
227
+ "\u2810",
228
+ "\u2812",
229
+ "\u2816",
230
+ "\u2826",
231
+ "\u2824",
232
+ "\u2820",
233
+ "\u2820",
234
+ "\u2824",
235
+ "\u2826",
236
+ "\u2816",
237
+ "\u2812",
238
+ "\u2810",
239
+ "\u2810",
240
+ "\u2812",
241
+ "\u2813",
242
+ "\u280B",
243
+ "\u2809",
244
+ "\u2808"
245
+ ]
246
+ },
247
+ dots8: {
248
+ interval: 80,
249
+ frames: [
250
+ "\u2801",
251
+ "\u2801",
252
+ "\u2809",
253
+ "\u2819",
254
+ "\u281A",
255
+ "\u2812",
256
+ "\u2802",
257
+ "\u2802",
258
+ "\u2812",
259
+ "\u2832",
260
+ "\u2834",
261
+ "\u2824",
262
+ "\u2804",
263
+ "\u2804",
264
+ "\u2824",
265
+ "\u2820",
266
+ "\u2820",
267
+ "\u2824",
268
+ "\u2826",
269
+ "\u2816",
270
+ "\u2812",
271
+ "\u2810",
272
+ "\u2810",
273
+ "\u2812",
274
+ "\u2813",
275
+ "\u280B",
276
+ "\u2809",
277
+ "\u2808",
278
+ "\u2808"
279
+ ]
280
+ },
281
+ dots9: {
282
+ interval: 80,
283
+ frames: [
284
+ "\u28B9",
285
+ "\u28BA",
286
+ "\u28BC",
287
+ "\u28F8",
288
+ "\u28C7",
289
+ "\u2867",
290
+ "\u2857",
291
+ "\u284F"
292
+ ]
293
+ },
294
+ dots10: {
295
+ interval: 80,
296
+ frames: [
297
+ "\u2884",
298
+ "\u2882",
299
+ "\u2881",
300
+ "\u2841",
301
+ "\u2848",
302
+ "\u2850",
303
+ "\u2860"
304
+ ]
305
+ },
306
+ dots11: {
307
+ interval: 100,
308
+ frames: [
309
+ "\u2801",
310
+ "\u2802",
311
+ "\u2804",
312
+ "\u2840",
313
+ "\u2880",
314
+ "\u2820",
315
+ "\u2810",
316
+ "\u2808"
317
+ ]
318
+ },
319
+ dots12: {
320
+ interval: 80,
321
+ frames: [
322
+ "\u2880\u2800",
323
+ "\u2840\u2800",
324
+ "\u2804\u2800",
325
+ "\u2882\u2800",
326
+ "\u2842\u2800",
327
+ "\u2805\u2800",
328
+ "\u2883\u2800",
329
+ "\u2843\u2800",
330
+ "\u280D\u2800",
331
+ "\u288B\u2800",
332
+ "\u284B\u2800",
333
+ "\u280D\u2801",
334
+ "\u288B\u2801",
335
+ "\u284B\u2801",
336
+ "\u280D\u2809",
337
+ "\u280B\u2809",
338
+ "\u280B\u2809",
339
+ "\u2809\u2819",
340
+ "\u2809\u2819",
341
+ "\u2809\u2829",
342
+ "\u2808\u2899",
343
+ "\u2808\u2859",
344
+ "\u2888\u2829",
345
+ "\u2840\u2899",
346
+ "\u2804\u2859",
347
+ "\u2882\u2829",
348
+ "\u2842\u2898",
349
+ "\u2805\u2858",
350
+ "\u2883\u2828",
351
+ "\u2843\u2890",
352
+ "\u280D\u2850",
353
+ "\u288B\u2820",
354
+ "\u284B\u2880",
355
+ "\u280D\u2841",
356
+ "\u288B\u2801",
357
+ "\u284B\u2801",
358
+ "\u280D\u2809",
359
+ "\u280B\u2809",
360
+ "\u280B\u2809",
361
+ "\u2809\u2819",
362
+ "\u2809\u2819",
363
+ "\u2809\u2829",
364
+ "\u2808\u2899",
365
+ "\u2808\u2859",
366
+ "\u2808\u2829",
367
+ "\u2800\u2899",
368
+ "\u2800\u2859",
369
+ "\u2800\u2829",
370
+ "\u2800\u2898",
371
+ "\u2800\u2858",
372
+ "\u2800\u2828",
373
+ "\u2800\u2890",
374
+ "\u2800\u2850",
375
+ "\u2800\u2820",
376
+ "\u2800\u2880",
377
+ "\u2800\u2840"
378
+ ]
379
+ },
380
+ dots13: {
381
+ interval: 80,
382
+ frames: [
383
+ "\u28FC",
384
+ "\u28F9",
385
+ "\u28BB",
386
+ "\u283F",
387
+ "\u285F",
388
+ "\u28CF",
389
+ "\u28E7",
390
+ "\u28F6"
391
+ ]
392
+ },
393
+ dots8Bit: {
394
+ interval: 80,
395
+ frames: [
396
+ "\u2800",
397
+ "\u2801",
398
+ "\u2802",
399
+ "\u2803",
400
+ "\u2804",
401
+ "\u2805",
402
+ "\u2806",
403
+ "\u2807",
404
+ "\u2840",
405
+ "\u2841",
406
+ "\u2842",
407
+ "\u2843",
408
+ "\u2844",
409
+ "\u2845",
410
+ "\u2846",
411
+ "\u2847",
412
+ "\u2808",
413
+ "\u2809",
414
+ "\u280A",
415
+ "\u280B",
416
+ "\u280C",
417
+ "\u280D",
418
+ "\u280E",
419
+ "\u280F",
420
+ "\u2848",
421
+ "\u2849",
422
+ "\u284A",
423
+ "\u284B",
424
+ "\u284C",
425
+ "\u284D",
426
+ "\u284E",
427
+ "\u284F",
428
+ "\u2810",
429
+ "\u2811",
430
+ "\u2812",
431
+ "\u2813",
432
+ "\u2814",
433
+ "\u2815",
434
+ "\u2816",
435
+ "\u2817",
436
+ "\u2850",
437
+ "\u2851",
438
+ "\u2852",
439
+ "\u2853",
440
+ "\u2854",
441
+ "\u2855",
442
+ "\u2856",
443
+ "\u2857",
444
+ "\u2818",
445
+ "\u2819",
446
+ "\u281A",
447
+ "\u281B",
448
+ "\u281C",
449
+ "\u281D",
450
+ "\u281E",
451
+ "\u281F",
452
+ "\u2858",
453
+ "\u2859",
454
+ "\u285A",
455
+ "\u285B",
456
+ "\u285C",
457
+ "\u285D",
458
+ "\u285E",
459
+ "\u285F",
460
+ "\u2820",
461
+ "\u2821",
462
+ "\u2822",
463
+ "\u2823",
464
+ "\u2824",
465
+ "\u2825",
466
+ "\u2826",
467
+ "\u2827",
468
+ "\u2860",
469
+ "\u2861",
470
+ "\u2862",
471
+ "\u2863",
472
+ "\u2864",
473
+ "\u2865",
474
+ "\u2866",
475
+ "\u2867",
476
+ "\u2828",
477
+ "\u2829",
478
+ "\u282A",
479
+ "\u282B",
480
+ "\u282C",
481
+ "\u282D",
482
+ "\u282E",
483
+ "\u282F",
484
+ "\u2868",
485
+ "\u2869",
486
+ "\u286A",
487
+ "\u286B",
488
+ "\u286C",
489
+ "\u286D",
490
+ "\u286E",
491
+ "\u286F",
492
+ "\u2830",
493
+ "\u2831",
494
+ "\u2832",
495
+ "\u2833",
496
+ "\u2834",
497
+ "\u2835",
498
+ "\u2836",
499
+ "\u2837",
500
+ "\u2870",
501
+ "\u2871",
502
+ "\u2872",
503
+ "\u2873",
504
+ "\u2874",
505
+ "\u2875",
506
+ "\u2876",
507
+ "\u2877",
508
+ "\u2838",
509
+ "\u2839",
510
+ "\u283A",
511
+ "\u283B",
512
+ "\u283C",
513
+ "\u283D",
514
+ "\u283E",
515
+ "\u283F",
516
+ "\u2878",
517
+ "\u2879",
518
+ "\u287A",
519
+ "\u287B",
520
+ "\u287C",
521
+ "\u287D",
522
+ "\u287E",
523
+ "\u287F",
524
+ "\u2880",
525
+ "\u2881",
526
+ "\u2882",
527
+ "\u2883",
528
+ "\u2884",
529
+ "\u2885",
530
+ "\u2886",
531
+ "\u2887",
532
+ "\u28C0",
533
+ "\u28C1",
534
+ "\u28C2",
535
+ "\u28C3",
536
+ "\u28C4",
537
+ "\u28C5",
538
+ "\u28C6",
539
+ "\u28C7",
540
+ "\u2888",
541
+ "\u2889",
542
+ "\u288A",
543
+ "\u288B",
544
+ "\u288C",
545
+ "\u288D",
546
+ "\u288E",
547
+ "\u288F",
548
+ "\u28C8",
549
+ "\u28C9",
550
+ "\u28CA",
551
+ "\u28CB",
552
+ "\u28CC",
553
+ "\u28CD",
554
+ "\u28CE",
555
+ "\u28CF",
556
+ "\u2890",
557
+ "\u2891",
558
+ "\u2892",
559
+ "\u2893",
560
+ "\u2894",
561
+ "\u2895",
562
+ "\u2896",
563
+ "\u2897",
564
+ "\u28D0",
565
+ "\u28D1",
566
+ "\u28D2",
567
+ "\u28D3",
568
+ "\u28D4",
569
+ "\u28D5",
570
+ "\u28D6",
571
+ "\u28D7",
572
+ "\u2898",
573
+ "\u2899",
574
+ "\u289A",
575
+ "\u289B",
576
+ "\u289C",
577
+ "\u289D",
578
+ "\u289E",
579
+ "\u289F",
580
+ "\u28D8",
581
+ "\u28D9",
582
+ "\u28DA",
583
+ "\u28DB",
584
+ "\u28DC",
585
+ "\u28DD",
586
+ "\u28DE",
587
+ "\u28DF",
588
+ "\u28A0",
589
+ "\u28A1",
590
+ "\u28A2",
591
+ "\u28A3",
592
+ "\u28A4",
593
+ "\u28A5",
594
+ "\u28A6",
595
+ "\u28A7",
596
+ "\u28E0",
597
+ "\u28E1",
598
+ "\u28E2",
599
+ "\u28E3",
600
+ "\u28E4",
601
+ "\u28E5",
602
+ "\u28E6",
603
+ "\u28E7",
604
+ "\u28A8",
605
+ "\u28A9",
606
+ "\u28AA",
607
+ "\u28AB",
608
+ "\u28AC",
609
+ "\u28AD",
610
+ "\u28AE",
611
+ "\u28AF",
612
+ "\u28E8",
613
+ "\u28E9",
614
+ "\u28EA",
615
+ "\u28EB",
616
+ "\u28EC",
617
+ "\u28ED",
618
+ "\u28EE",
619
+ "\u28EF",
620
+ "\u28B0",
621
+ "\u28B1",
622
+ "\u28B2",
623
+ "\u28B3",
624
+ "\u28B4",
625
+ "\u28B5",
626
+ "\u28B6",
627
+ "\u28B7",
628
+ "\u28F0",
629
+ "\u28F1",
630
+ "\u28F2",
631
+ "\u28F3",
632
+ "\u28F4",
633
+ "\u28F5",
634
+ "\u28F6",
635
+ "\u28F7",
636
+ "\u28B8",
637
+ "\u28B9",
638
+ "\u28BA",
639
+ "\u28BB",
640
+ "\u28BC",
641
+ "\u28BD",
642
+ "\u28BE",
643
+ "\u28BF",
644
+ "\u28F8",
645
+ "\u28F9",
646
+ "\u28FA",
647
+ "\u28FB",
648
+ "\u28FC",
649
+ "\u28FD",
650
+ "\u28FE",
651
+ "\u28FF"
652
+ ]
653
+ },
654
+ sand: {
655
+ interval: 80,
656
+ frames: [
657
+ "\u2801",
658
+ "\u2802",
659
+ "\u2804",
660
+ "\u2840",
661
+ "\u2848",
662
+ "\u2850",
663
+ "\u2860",
664
+ "\u28C0",
665
+ "\u28C1",
666
+ "\u28C2",
667
+ "\u28C4",
668
+ "\u28CC",
669
+ "\u28D4",
670
+ "\u28E4",
671
+ "\u28E5",
672
+ "\u28E6",
673
+ "\u28EE",
674
+ "\u28F6",
675
+ "\u28F7",
676
+ "\u28FF",
677
+ "\u287F",
678
+ "\u283F",
679
+ "\u289F",
680
+ "\u281F",
681
+ "\u285B",
682
+ "\u281B",
683
+ "\u282B",
684
+ "\u288B",
685
+ "\u280B",
686
+ "\u280D",
687
+ "\u2849",
688
+ "\u2809",
689
+ "\u2811",
690
+ "\u2821",
691
+ "\u2881"
692
+ ]
693
+ },
694
+ line: {
695
+ interval: 130,
696
+ frames: [
697
+ "-",
698
+ "\\",
699
+ "|",
700
+ "/"
701
+ ]
702
+ },
703
+ line2: {
704
+ interval: 100,
705
+ frames: [
706
+ "\u2802",
707
+ "-",
708
+ "\u2013",
709
+ "\u2014",
710
+ "\u2013",
711
+ "-"
712
+ ]
713
+ },
714
+ pipe: {
715
+ interval: 100,
716
+ frames: [
717
+ "\u2524",
718
+ "\u2518",
719
+ "\u2534",
720
+ "\u2514",
721
+ "\u251C",
722
+ "\u250C",
723
+ "\u252C",
724
+ "\u2510"
725
+ ]
726
+ },
727
+ simpleDots: {
728
+ interval: 400,
729
+ frames: [
730
+ ". ",
731
+ ".. ",
732
+ "...",
733
+ " "
734
+ ]
735
+ },
736
+ simpleDotsScrolling: {
737
+ interval: 200,
738
+ frames: [
739
+ ". ",
740
+ ".. ",
741
+ "...",
742
+ " ..",
743
+ " .",
744
+ " "
745
+ ]
746
+ },
747
+ star: {
748
+ interval: 70,
749
+ frames: [
750
+ "\u2736",
751
+ "\u2738",
752
+ "\u2739",
753
+ "\u273A",
754
+ "\u2739",
755
+ "\u2737"
756
+ ]
757
+ },
758
+ star2: {
759
+ interval: 80,
760
+ frames: [
761
+ "+",
762
+ "x",
763
+ "*"
764
+ ]
765
+ },
766
+ flip: {
767
+ interval: 70,
768
+ frames: [
769
+ "_",
770
+ "_",
771
+ "_",
772
+ "-",
773
+ "`",
774
+ "`",
775
+ "'",
776
+ "\xB4",
777
+ "-",
778
+ "_",
779
+ "_",
780
+ "_"
781
+ ]
782
+ },
783
+ hamburger: {
784
+ interval: 100,
785
+ frames: [
786
+ "\u2631",
787
+ "\u2632",
788
+ "\u2634"
789
+ ]
790
+ },
791
+ growVertical: {
792
+ interval: 120,
793
+ frames: [
794
+ "\u2581",
795
+ "\u2583",
796
+ "\u2584",
797
+ "\u2585",
798
+ "\u2586",
799
+ "\u2587",
800
+ "\u2586",
801
+ "\u2585",
802
+ "\u2584",
803
+ "\u2583"
804
+ ]
805
+ },
806
+ growHorizontal: {
807
+ interval: 120,
808
+ frames: [
809
+ "\u258F",
810
+ "\u258E",
811
+ "\u258D",
812
+ "\u258C",
813
+ "\u258B",
814
+ "\u258A",
815
+ "\u2589",
816
+ "\u258A",
817
+ "\u258B",
818
+ "\u258C",
819
+ "\u258D",
820
+ "\u258E"
821
+ ]
822
+ },
823
+ balloon: {
824
+ interval: 140,
825
+ frames: [
826
+ " ",
827
+ ".",
828
+ "o",
829
+ "O",
830
+ "@",
831
+ "*",
832
+ " "
833
+ ]
834
+ },
835
+ balloon2: {
836
+ interval: 120,
837
+ frames: [
838
+ ".",
839
+ "o",
840
+ "O",
841
+ "\xB0",
842
+ "O",
843
+ "o",
844
+ "."
845
+ ]
846
+ },
847
+ noise: {
848
+ interval: 100,
849
+ frames: [
850
+ "\u2593",
851
+ "\u2592",
852
+ "\u2591"
853
+ ]
854
+ },
855
+ bounce: {
856
+ interval: 120,
857
+ frames: [
858
+ "\u2801",
859
+ "\u2802",
860
+ "\u2804",
861
+ "\u2802"
862
+ ]
863
+ },
864
+ boxBounce: {
865
+ interval: 120,
866
+ frames: [
867
+ "\u2596",
868
+ "\u2598",
869
+ "\u259D",
870
+ "\u2597"
871
+ ]
872
+ },
873
+ boxBounce2: {
874
+ interval: 100,
875
+ frames: [
876
+ "\u258C",
877
+ "\u2580",
878
+ "\u2590",
879
+ "\u2584"
880
+ ]
881
+ },
882
+ triangle: {
883
+ interval: 50,
884
+ frames: [
885
+ "\u25E2",
886
+ "\u25E3",
887
+ "\u25E4",
888
+ "\u25E5"
889
+ ]
890
+ },
891
+ binary: {
892
+ interval: 80,
893
+ frames: [
894
+ "010010",
895
+ "001100",
896
+ "100101",
897
+ "111010",
898
+ "111101",
899
+ "010111",
900
+ "101011",
901
+ "111000",
902
+ "110011",
903
+ "110101"
904
+ ]
905
+ },
906
+ arc: {
907
+ interval: 100,
908
+ frames: [
909
+ "\u25DC",
910
+ "\u25E0",
911
+ "\u25DD",
912
+ "\u25DE",
913
+ "\u25E1",
914
+ "\u25DF"
915
+ ]
916
+ },
917
+ circle: {
918
+ interval: 120,
919
+ frames: [
920
+ "\u25E1",
921
+ "\u2299",
922
+ "\u25E0"
923
+ ]
924
+ },
925
+ squareCorners: {
926
+ interval: 180,
927
+ frames: [
928
+ "\u25F0",
929
+ "\u25F3",
930
+ "\u25F2",
931
+ "\u25F1"
932
+ ]
933
+ },
934
+ circleQuarters: {
935
+ interval: 120,
936
+ frames: [
937
+ "\u25F4",
938
+ "\u25F7",
939
+ "\u25F6",
940
+ "\u25F5"
941
+ ]
942
+ },
943
+ circleHalves: {
944
+ interval: 50,
945
+ frames: [
946
+ "\u25D0",
947
+ "\u25D3",
948
+ "\u25D1",
949
+ "\u25D2"
950
+ ]
951
+ },
952
+ squish: {
953
+ interval: 100,
954
+ frames: [
955
+ "\u256B",
956
+ "\u256A"
957
+ ]
958
+ },
959
+ toggle: {
960
+ interval: 250,
961
+ frames: [
962
+ "\u22B6",
963
+ "\u22B7"
964
+ ]
965
+ },
966
+ toggle2: {
967
+ interval: 80,
968
+ frames: [
969
+ "\u25AB",
970
+ "\u25AA"
971
+ ]
972
+ },
973
+ toggle3: {
974
+ interval: 120,
975
+ frames: [
976
+ "\u25A1",
977
+ "\u25A0"
978
+ ]
979
+ },
980
+ toggle4: {
981
+ interval: 100,
982
+ frames: [
983
+ "\u25A0",
984
+ "\u25A1",
985
+ "\u25AA",
986
+ "\u25AB"
987
+ ]
988
+ },
989
+ toggle5: {
990
+ interval: 100,
991
+ frames: [
992
+ "\u25AE",
993
+ "\u25AF"
994
+ ]
995
+ },
996
+ toggle6: {
997
+ interval: 300,
998
+ frames: [
999
+ "\u101D",
1000
+ "\u1040"
1001
+ ]
1002
+ },
1003
+ toggle7: {
1004
+ interval: 80,
1005
+ frames: [
1006
+ "\u29BE",
1007
+ "\u29BF"
1008
+ ]
1009
+ },
1010
+ toggle8: {
1011
+ interval: 100,
1012
+ frames: [
1013
+ "\u25CD",
1014
+ "\u25CC"
1015
+ ]
1016
+ },
1017
+ toggle9: {
1018
+ interval: 100,
1019
+ frames: [
1020
+ "\u25C9",
1021
+ "\u25CE"
1022
+ ]
1023
+ },
1024
+ toggle10: {
1025
+ interval: 100,
1026
+ frames: [
1027
+ "\u3282",
1028
+ "\u3280",
1029
+ "\u3281"
1030
+ ]
1031
+ },
1032
+ toggle11: {
1033
+ interval: 50,
1034
+ frames: [
1035
+ "\u29C7",
1036
+ "\u29C6"
1037
+ ]
1038
+ },
1039
+ toggle12: {
1040
+ interval: 120,
1041
+ frames: [
1042
+ "\u2617",
1043
+ "\u2616"
1044
+ ]
1045
+ },
1046
+ toggle13: {
1047
+ interval: 80,
1048
+ frames: [
1049
+ "=",
1050
+ "*",
1051
+ "-"
1052
+ ]
1053
+ },
1054
+ arrow: {
1055
+ interval: 100,
1056
+ frames: [
1057
+ "\u2190",
1058
+ "\u2196",
1059
+ "\u2191",
1060
+ "\u2197",
1061
+ "\u2192",
1062
+ "\u2198",
1063
+ "\u2193",
1064
+ "\u2199"
1065
+ ]
1066
+ },
1067
+ arrow2: {
1068
+ interval: 80,
1069
+ frames: [
1070
+ "\u2B06\uFE0F ",
1071
+ "\u2197\uFE0F ",
1072
+ "\u27A1\uFE0F ",
1073
+ "\u2198\uFE0F ",
1074
+ "\u2B07\uFE0F ",
1075
+ "\u2199\uFE0F ",
1076
+ "\u2B05\uFE0F ",
1077
+ "\u2196\uFE0F "
1078
+ ]
1079
+ },
1080
+ arrow3: {
1081
+ interval: 120,
1082
+ frames: [
1083
+ "\u25B9\u25B9\u25B9\u25B9\u25B9",
1084
+ "\u25B8\u25B9\u25B9\u25B9\u25B9",
1085
+ "\u25B9\u25B8\u25B9\u25B9\u25B9",
1086
+ "\u25B9\u25B9\u25B8\u25B9\u25B9",
1087
+ "\u25B9\u25B9\u25B9\u25B8\u25B9",
1088
+ "\u25B9\u25B9\u25B9\u25B9\u25B8"
1089
+ ]
1090
+ },
1091
+ bouncingBar: {
1092
+ interval: 80,
1093
+ frames: [
1094
+ "[ ]",
1095
+ "[= ]",
1096
+ "[== ]",
1097
+ "[=== ]",
1098
+ "[====]",
1099
+ "[ ===]",
1100
+ "[ ==]",
1101
+ "[ =]",
1102
+ "[ ]",
1103
+ "[ =]",
1104
+ "[ ==]",
1105
+ "[ ===]",
1106
+ "[====]",
1107
+ "[=== ]",
1108
+ "[== ]",
1109
+ "[= ]"
1110
+ ]
1111
+ },
1112
+ bouncingBall: {
1113
+ interval: 80,
1114
+ frames: [
1115
+ "( \u25CF )",
1116
+ "( \u25CF )",
1117
+ "( \u25CF )",
1118
+ "( \u25CF )",
1119
+ "( \u25CF)",
1120
+ "( \u25CF )",
1121
+ "( \u25CF )",
1122
+ "( \u25CF )",
1123
+ "( \u25CF )",
1124
+ "(\u25CF )"
1125
+ ]
1126
+ },
1127
+ smiley: {
1128
+ interval: 200,
1129
+ frames: [
1130
+ "\u{1F604} ",
1131
+ "\u{1F61D} "
1132
+ ]
1133
+ },
1134
+ monkey: {
1135
+ interval: 300,
1136
+ frames: [
1137
+ "\u{1F648} ",
1138
+ "\u{1F648} ",
1139
+ "\u{1F649} ",
1140
+ "\u{1F64A} "
1141
+ ]
1142
+ },
1143
+ hearts: {
1144
+ interval: 100,
1145
+ frames: [
1146
+ "\u{1F49B} ",
1147
+ "\u{1F499} ",
1148
+ "\u{1F49C} ",
1149
+ "\u{1F49A} ",
1150
+ "\u2764\uFE0F "
1151
+ ]
1152
+ },
1153
+ clock: {
1154
+ interval: 100,
1155
+ frames: [
1156
+ "\u{1F55B} ",
1157
+ "\u{1F550} ",
1158
+ "\u{1F551} ",
1159
+ "\u{1F552} ",
1160
+ "\u{1F553} ",
1161
+ "\u{1F554} ",
1162
+ "\u{1F555} ",
1163
+ "\u{1F556} ",
1164
+ "\u{1F557} ",
1165
+ "\u{1F558} ",
1166
+ "\u{1F559} ",
1167
+ "\u{1F55A} "
1168
+ ]
1169
+ },
1170
+ earth: {
1171
+ interval: 180,
1172
+ frames: [
1173
+ "\u{1F30D} ",
1174
+ "\u{1F30E} ",
1175
+ "\u{1F30F} "
1176
+ ]
1177
+ },
1178
+ material: {
1179
+ interval: 17,
1180
+ frames: [
1181
+ "\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1182
+ "\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1183
+ "\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1184
+ "\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1185
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1186
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1187
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1188
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1189
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1190
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1191
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1192
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1193
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1194
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
1195
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
1196
+ "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
1197
+ "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
1198
+ "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
1199
+ "\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581",
1200
+ "\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
1201
+ "\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
1202
+ "\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
1203
+ "\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
1204
+ "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
1205
+ "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
1206
+ "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
1207
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1208
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1209
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1210
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1211
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1212
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1213
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1214
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1215
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1216
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1217
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1218
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1219
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588",
1220
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588",
1221
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588",
1222
+ "\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
1223
+ "\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
1224
+ "\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
1225
+ "\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
1226
+ "\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
1227
+ "\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
1228
+ "\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
1229
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
1230
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1231
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1232
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1233
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1234
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1235
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1236
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1237
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1238
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
1239
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
1240
+ "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
1241
+ "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
1242
+ "\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581",
1243
+ "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
1244
+ "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
1245
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
1246
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
1247
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
1248
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
1249
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
1250
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
1251
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
1252
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
1253
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
1254
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
1255
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1256
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1257
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588",
1258
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
1259
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
1260
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
1261
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
1262
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
1263
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
1264
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
1265
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
1266
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
1267
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
1268
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
1269
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1270
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1271
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1272
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581"
1273
+ ]
1274
+ },
1275
+ moon: {
1276
+ interval: 80,
1277
+ frames: [
1278
+ "\u{1F311} ",
1279
+ "\u{1F312} ",
1280
+ "\u{1F313} ",
1281
+ "\u{1F314} ",
1282
+ "\u{1F315} ",
1283
+ "\u{1F316} ",
1284
+ "\u{1F317} ",
1285
+ "\u{1F318} "
1286
+ ]
1287
+ },
1288
+ runner: {
1289
+ interval: 140,
1290
+ frames: [
1291
+ "\u{1F6B6} ",
1292
+ "\u{1F3C3} "
1293
+ ]
1294
+ },
1295
+ pong: {
1296
+ interval: 80,
1297
+ frames: [
1298
+ "\u2590\u2802 \u258C",
1299
+ "\u2590\u2808 \u258C",
1300
+ "\u2590 \u2802 \u258C",
1301
+ "\u2590 \u2820 \u258C",
1302
+ "\u2590 \u2840 \u258C",
1303
+ "\u2590 \u2820 \u258C",
1304
+ "\u2590 \u2802 \u258C",
1305
+ "\u2590 \u2808 \u258C",
1306
+ "\u2590 \u2802 \u258C",
1307
+ "\u2590 \u2820 \u258C",
1308
+ "\u2590 \u2840 \u258C",
1309
+ "\u2590 \u2820 \u258C",
1310
+ "\u2590 \u2802 \u258C",
1311
+ "\u2590 \u2808 \u258C",
1312
+ "\u2590 \u2802\u258C",
1313
+ "\u2590 \u2820\u258C",
1314
+ "\u2590 \u2840\u258C",
1315
+ "\u2590 \u2820 \u258C",
1316
+ "\u2590 \u2802 \u258C",
1317
+ "\u2590 \u2808 \u258C",
1318
+ "\u2590 \u2802 \u258C",
1319
+ "\u2590 \u2820 \u258C",
1320
+ "\u2590 \u2840 \u258C",
1321
+ "\u2590 \u2820 \u258C",
1322
+ "\u2590 \u2802 \u258C",
1323
+ "\u2590 \u2808 \u258C",
1324
+ "\u2590 \u2802 \u258C",
1325
+ "\u2590 \u2820 \u258C",
1326
+ "\u2590 \u2840 \u258C",
1327
+ "\u2590\u2820 \u258C"
1328
+ ]
1329
+ },
1330
+ shark: {
1331
+ interval: 120,
1332
+ frames: [
1333
+ "\u2590|\\____________\u258C",
1334
+ "\u2590_|\\___________\u258C",
1335
+ "\u2590__|\\__________\u258C",
1336
+ "\u2590___|\\_________\u258C",
1337
+ "\u2590____|\\________\u258C",
1338
+ "\u2590_____|\\_______\u258C",
1339
+ "\u2590______|\\______\u258C",
1340
+ "\u2590_______|\\_____\u258C",
1341
+ "\u2590________|\\____\u258C",
1342
+ "\u2590_________|\\___\u258C",
1343
+ "\u2590__________|\\__\u258C",
1344
+ "\u2590___________|\\_\u258C",
1345
+ "\u2590____________|\\\u258C",
1346
+ "\u2590____________/|\u258C",
1347
+ "\u2590___________/|_\u258C",
1348
+ "\u2590__________/|__\u258C",
1349
+ "\u2590_________/|___\u258C",
1350
+ "\u2590________/|____\u258C",
1351
+ "\u2590_______/|_____\u258C",
1352
+ "\u2590______/|______\u258C",
1353
+ "\u2590_____/|_______\u258C",
1354
+ "\u2590____/|________\u258C",
1355
+ "\u2590___/|_________\u258C",
1356
+ "\u2590__/|__________\u258C",
1357
+ "\u2590_/|___________\u258C",
1358
+ "\u2590/|____________\u258C"
1359
+ ]
1360
+ },
1361
+ dqpb: {
1362
+ interval: 100,
1363
+ frames: [
1364
+ "d",
1365
+ "q",
1366
+ "p",
1367
+ "b"
1368
+ ]
1369
+ },
1370
+ weather: {
1371
+ interval: 100,
1372
+ frames: [
1373
+ "\u2600\uFE0F ",
1374
+ "\u2600\uFE0F ",
1375
+ "\u2600\uFE0F ",
1376
+ "\u{1F324} ",
1377
+ "\u26C5\uFE0F ",
1378
+ "\u{1F325} ",
1379
+ "\u2601\uFE0F ",
1380
+ "\u{1F327} ",
1381
+ "\u{1F328} ",
1382
+ "\u{1F327} ",
1383
+ "\u{1F328} ",
1384
+ "\u{1F327} ",
1385
+ "\u{1F328} ",
1386
+ "\u26C8 ",
1387
+ "\u{1F328} ",
1388
+ "\u{1F327} ",
1389
+ "\u{1F328} ",
1390
+ "\u2601\uFE0F ",
1391
+ "\u{1F325} ",
1392
+ "\u26C5\uFE0F ",
1393
+ "\u{1F324} ",
1394
+ "\u2600\uFE0F ",
1395
+ "\u2600\uFE0F "
1396
+ ]
1397
+ },
1398
+ christmas: {
1399
+ interval: 400,
1400
+ frames: [
1401
+ "\u{1F332}",
1402
+ "\u{1F384}"
1403
+ ]
1404
+ },
1405
+ grenade: {
1406
+ interval: 80,
1407
+ frames: [
1408
+ "\u060C ",
1409
+ "\u2032 ",
1410
+ " \xB4 ",
1411
+ " \u203E ",
1412
+ " \u2E0C",
1413
+ " \u2E0A",
1414
+ " |",
1415
+ " \u204E",
1416
+ " \u2055",
1417
+ " \u0DF4 ",
1418
+ " \u2053",
1419
+ " ",
1420
+ " ",
1421
+ " "
1422
+ ]
1423
+ },
1424
+ point: {
1425
+ interval: 125,
1426
+ frames: [
1427
+ "\u2219\u2219\u2219",
1428
+ "\u25CF\u2219\u2219",
1429
+ "\u2219\u25CF\u2219",
1430
+ "\u2219\u2219\u25CF",
1431
+ "\u2219\u2219\u2219"
1432
+ ]
1433
+ },
1434
+ layer: {
1435
+ interval: 150,
1436
+ frames: [
1437
+ "-",
1438
+ "=",
1439
+ "\u2261"
1440
+ ]
1441
+ },
1442
+ betaWave: {
1443
+ interval: 80,
1444
+ frames: [
1445
+ "\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2",
1446
+ "\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2",
1447
+ "\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2",
1448
+ "\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2",
1449
+ "\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2",
1450
+ "\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2",
1451
+ "\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1"
1452
+ ]
1453
+ },
1454
+ fingerDance: {
1455
+ interval: 160,
1456
+ frames: [
1457
+ "\u{1F918} ",
1458
+ "\u{1F91F} ",
1459
+ "\u{1F596} ",
1460
+ "\u270B ",
1461
+ "\u{1F91A} ",
1462
+ "\u{1F446} "
1463
+ ]
1464
+ },
1465
+ fistBump: {
1466
+ interval: 80,
1467
+ frames: [
1468
+ "\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ",
1469
+ "\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ",
1470
+ "\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ",
1471
+ "\u3000\u{1F91C}\u3000\u3000\u{1F91B}\u3000 ",
1472
+ "\u3000\u3000\u{1F91C}\u{1F91B}\u3000\u3000 ",
1473
+ "\u3000\u{1F91C}\u2728\u{1F91B}\u3000\u3000 ",
1474
+ "\u{1F91C}\u3000\u2728\u3000\u{1F91B}\u3000 "
1475
+ ]
1476
+ },
1477
+ soccerHeader: {
1478
+ interval: 80,
1479
+ frames: [
1480
+ " \u{1F9D1}\u26BD\uFE0F \u{1F9D1} ",
1481
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
1482
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
1483
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
1484
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
1485
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
1486
+ "\u{1F9D1} \u26BD\uFE0F\u{1F9D1} ",
1487
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
1488
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
1489
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
1490
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
1491
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} "
1492
+ ]
1493
+ },
1494
+ mindblown: {
1495
+ interval: 160,
1496
+ frames: [
1497
+ "\u{1F610} ",
1498
+ "\u{1F610} ",
1499
+ "\u{1F62E} ",
1500
+ "\u{1F62E} ",
1501
+ "\u{1F626} ",
1502
+ "\u{1F626} ",
1503
+ "\u{1F627} ",
1504
+ "\u{1F627} ",
1505
+ "\u{1F92F} ",
1506
+ "\u{1F4A5} ",
1507
+ "\u2728 ",
1508
+ "\u3000 ",
1509
+ "\u3000 ",
1510
+ "\u3000 "
1511
+ ]
1512
+ },
1513
+ speaker: {
1514
+ interval: 160,
1515
+ frames: [
1516
+ "\u{1F508} ",
1517
+ "\u{1F509} ",
1518
+ "\u{1F50A} ",
1519
+ "\u{1F509} "
1520
+ ]
1521
+ },
1522
+ orangePulse: {
1523
+ interval: 100,
1524
+ frames: [
1525
+ "\u{1F538} ",
1526
+ "\u{1F536} ",
1527
+ "\u{1F7E0} ",
1528
+ "\u{1F7E0} ",
1529
+ "\u{1F536} "
1530
+ ]
1531
+ },
1532
+ bluePulse: {
1533
+ interval: 100,
1534
+ frames: [
1535
+ "\u{1F539} ",
1536
+ "\u{1F537} ",
1537
+ "\u{1F535} ",
1538
+ "\u{1F535} ",
1539
+ "\u{1F537} "
1540
+ ]
1541
+ },
1542
+ orangeBluePulse: {
1543
+ interval: 100,
1544
+ frames: [
1545
+ "\u{1F538} ",
1546
+ "\u{1F536} ",
1547
+ "\u{1F7E0} ",
1548
+ "\u{1F7E0} ",
1549
+ "\u{1F536} ",
1550
+ "\u{1F539} ",
1551
+ "\u{1F537} ",
1552
+ "\u{1F535} ",
1553
+ "\u{1F535} ",
1554
+ "\u{1F537} "
1555
+ ]
1556
+ },
1557
+ timeTravel: {
1558
+ interval: 100,
1559
+ frames: [
1560
+ "\u{1F55B} ",
1561
+ "\u{1F55A} ",
1562
+ "\u{1F559} ",
1563
+ "\u{1F558} ",
1564
+ "\u{1F557} ",
1565
+ "\u{1F556} ",
1566
+ "\u{1F555} ",
1567
+ "\u{1F554} ",
1568
+ "\u{1F553} ",
1569
+ "\u{1F552} ",
1570
+ "\u{1F551} ",
1571
+ "\u{1F550} "
1572
+ ]
1573
+ },
1574
+ aesthetic: {
1575
+ interval: 80,
1576
+ frames: [
1577
+ "\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1",
1578
+ "\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1",
1579
+ "\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1",
1580
+ "\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1",
1581
+ "\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1",
1582
+ "\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1",
1583
+ "\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0",
1584
+ "\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1"
1585
+ ]
1586
+ },
1587
+ dwarfFortress: {
1588
+ interval: 80,
1589
+ frames: [
1590
+ " \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1591
+ "\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1592
+ "\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1593
+ "\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1594
+ "\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1595
+ "\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1596
+ "\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1597
+ "\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1598
+ "\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1599
+ "\u263A \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1600
+ " \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1601
+ " \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1602
+ " \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1603
+ " \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1604
+ " \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1605
+ " \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1606
+ " \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1607
+ " \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1608
+ " \u263A \u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1609
+ " \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1610
+ " \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1611
+ " \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 ",
1612
+ " \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 ",
1613
+ " \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 ",
1614
+ " \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 ",
1615
+ " \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 ",
1616
+ " \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 ",
1617
+ " \u263A \u2588\u2588\u2588\xA3\xA3\xA3 ",
1618
+ " \u263A\u2588\u2588\u2588\xA3\xA3\xA3 ",
1619
+ " \u263A\u2588\u2588\u2588\xA3\xA3\xA3 ",
1620
+ " \u263A\u2593\u2588\u2588\xA3\xA3\xA3 ",
1621
+ " \u263A\u2593\u2588\u2588\xA3\xA3\xA3 ",
1622
+ " \u263A\u2592\u2588\u2588\xA3\xA3\xA3 ",
1623
+ " \u263A\u2592\u2588\u2588\xA3\xA3\xA3 ",
1624
+ " \u263A\u2591\u2588\u2588\xA3\xA3\xA3 ",
1625
+ " \u263A\u2591\u2588\u2588\xA3\xA3\xA3 ",
1626
+ " \u263A \u2588\u2588\xA3\xA3\xA3 ",
1627
+ " \u263A\u2588\u2588\xA3\xA3\xA3 ",
1628
+ " \u263A\u2588\u2588\xA3\xA3\xA3 ",
1629
+ " \u263A\u2593\u2588\xA3\xA3\xA3 ",
1630
+ " \u263A\u2593\u2588\xA3\xA3\xA3 ",
1631
+ " \u263A\u2592\u2588\xA3\xA3\xA3 ",
1632
+ " \u263A\u2592\u2588\xA3\xA3\xA3 ",
1633
+ " \u263A\u2591\u2588\xA3\xA3\xA3 ",
1634
+ " \u263A\u2591\u2588\xA3\xA3\xA3 ",
1635
+ " \u263A \u2588\xA3\xA3\xA3 ",
1636
+ " \u263A\u2588\xA3\xA3\xA3 ",
1637
+ " \u263A\u2588\xA3\xA3\xA3 ",
1638
+ " \u263A\u2593\xA3\xA3\xA3 ",
1639
+ " \u263A\u2593\xA3\xA3\xA3 ",
1640
+ " \u263A\u2592\xA3\xA3\xA3 ",
1641
+ " \u263A\u2592\xA3\xA3\xA3 ",
1642
+ " \u263A\u2591\xA3\xA3\xA3 ",
1643
+ " \u263A\u2591\xA3\xA3\xA3 ",
1644
+ " \u263A \xA3\xA3\xA3 ",
1645
+ " \u263A\xA3\xA3\xA3 ",
1646
+ " \u263A\xA3\xA3\xA3 ",
1647
+ " \u263A\u2593\xA3\xA3 ",
1648
+ " \u263A\u2593\xA3\xA3 ",
1649
+ " \u263A\u2592\xA3\xA3 ",
1650
+ " \u263A\u2592\xA3\xA3 ",
1651
+ " \u263A\u2591\xA3\xA3 ",
1652
+ " \u263A\u2591\xA3\xA3 ",
1653
+ " \u263A \xA3\xA3 ",
1654
+ " \u263A\xA3\xA3 ",
1655
+ " \u263A\xA3\xA3 ",
1656
+ " \u263A\u2593\xA3 ",
1657
+ " \u263A\u2593\xA3 ",
1658
+ " \u263A\u2592\xA3 ",
1659
+ " \u263A\u2592\xA3 ",
1660
+ " \u263A\u2591\xA3 ",
1661
+ " \u263A\u2591\xA3 ",
1662
+ " \u263A \xA3 ",
1663
+ " \u263A\xA3 ",
1664
+ " \u263A\xA3 ",
1665
+ " \u263A\u2593 ",
1666
+ " \u263A\u2593 ",
1667
+ " \u263A\u2592 ",
1668
+ " \u263A\u2592 ",
1669
+ " \u263A\u2591 ",
1670
+ " \u263A\u2591 ",
1671
+ " \u263A ",
1672
+ " \u263A &",
1673
+ " \u263A \u263C&",
1674
+ " \u263A \u263C &",
1675
+ " \u263A\u263C &",
1676
+ " \u263A\u263C & ",
1677
+ " \u203C & ",
1678
+ " \u263A & ",
1679
+ " \u203C & ",
1680
+ " \u263A & ",
1681
+ " \u203C & ",
1682
+ " \u263A & ",
1683
+ "\u203C & ",
1684
+ " & ",
1685
+ " & ",
1686
+ " & \u2591 ",
1687
+ " & \u2592 ",
1688
+ " & \u2593 ",
1689
+ " & \xA3 ",
1690
+ " & \u2591\xA3 ",
1691
+ " & \u2592\xA3 ",
1692
+ " & \u2593\xA3 ",
1693
+ " & \xA3\xA3 ",
1694
+ " & \u2591\xA3\xA3 ",
1695
+ " & \u2592\xA3\xA3 ",
1696
+ "& \u2593\xA3\xA3 ",
1697
+ "& \xA3\xA3\xA3 ",
1698
+ " \u2591\xA3\xA3\xA3 ",
1699
+ " \u2592\xA3\xA3\xA3 ",
1700
+ " \u2593\xA3\xA3\xA3 ",
1701
+ " \u2588\xA3\xA3\xA3 ",
1702
+ " \u2591\u2588\xA3\xA3\xA3 ",
1703
+ " \u2592\u2588\xA3\xA3\xA3 ",
1704
+ " \u2593\u2588\xA3\xA3\xA3 ",
1705
+ " \u2588\u2588\xA3\xA3\xA3 ",
1706
+ " \u2591\u2588\u2588\xA3\xA3\xA3 ",
1707
+ " \u2592\u2588\u2588\xA3\xA3\xA3 ",
1708
+ " \u2593\u2588\u2588\xA3\xA3\xA3 ",
1709
+ " \u2588\u2588\u2588\xA3\xA3\xA3 ",
1710
+ " \u2591\u2588\u2588\u2588\xA3\xA3\xA3 ",
1711
+ " \u2592\u2588\u2588\u2588\xA3\xA3\xA3 ",
1712
+ " \u2593\u2588\u2588\u2588\xA3\xA3\xA3 ",
1713
+ " \u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1714
+ " \u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1715
+ " \u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1716
+ " \u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1717
+ " \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1718
+ " \u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1719
+ " \u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1720
+ " \u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1721
+ " \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1722
+ " \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "
1723
+ ]
1724
+ }
1725
+ };
1726
+ }
1727
+ });
1728
+
1729
+ // node_modules/.pnpm/cli-spinners@2.9.2/node_modules/cli-spinners/index.js
1730
+ var require_cli_spinners = __commonJS({
1731
+ "node_modules/.pnpm/cli-spinners@2.9.2/node_modules/cli-spinners/index.js"(exports, module) {
1732
+ var spinners = Object.assign({}, require_spinners());
1733
+ var spinnersList = Object.keys(spinners);
1734
+ Object.defineProperty(spinners, "random", {
1735
+ get() {
1736
+ const randomIndex = Math.floor(Math.random() * spinnersList.length);
1737
+ const spinnerName = spinnersList[randomIndex];
1738
+ return spinners[spinnerName];
1739
+ }
1740
+ });
1741
+ module.exports = spinners;
1742
+ }
1743
+ });
1744
+
1745
+ // node_modules/.pnpm/chalk@5.3.0/node_modules/chalk/source/vendor/ansi-styles/index.js
1746
+ var ANSI_BACKGROUND_OFFSET = 10;
1747
+ var wrapAnsi16 = (offset = 0) => (code) => `\x1B[${code + offset}m`;
1748
+ var wrapAnsi256 = (offset = 0) => (code) => `\x1B[${38 + offset};5;${code}m`;
1749
+ var wrapAnsi16m = (offset = 0) => (red, green, blue) => `\x1B[${38 + offset};2;${red};${green};${blue}m`;
1750
+ var styles = {
1751
+ modifier: {
1752
+ reset: [0, 0],
1753
+ // 21 isn't widely supported and 22 does the same thing
1754
+ bold: [1, 22],
1755
+ dim: [2, 22],
1756
+ italic: [3, 23],
1757
+ underline: [4, 24],
1758
+ overline: [53, 55],
1759
+ inverse: [7, 27],
1760
+ hidden: [8, 28],
1761
+ strikethrough: [9, 29]
1762
+ },
1763
+ color: {
1764
+ black: [30, 39],
1765
+ red: [31, 39],
1766
+ green: [32, 39],
1767
+ yellow: [33, 39],
1768
+ blue: [34, 39],
1769
+ magenta: [35, 39],
1770
+ cyan: [36, 39],
1771
+ white: [37, 39],
1772
+ // Bright color
1773
+ blackBright: [90, 39],
1774
+ gray: [90, 39],
1775
+ // Alias of `blackBright`
1776
+ grey: [90, 39],
1777
+ // Alias of `blackBright`
1778
+ redBright: [91, 39],
1779
+ greenBright: [92, 39],
1780
+ yellowBright: [93, 39],
1781
+ blueBright: [94, 39],
1782
+ magentaBright: [95, 39],
1783
+ cyanBright: [96, 39],
1784
+ whiteBright: [97, 39]
1785
+ },
1786
+ bgColor: {
1787
+ bgBlack: [40, 49],
1788
+ bgRed: [41, 49],
1789
+ bgGreen: [42, 49],
1790
+ bgYellow: [43, 49],
1791
+ bgBlue: [44, 49],
1792
+ bgMagenta: [45, 49],
1793
+ bgCyan: [46, 49],
1794
+ bgWhite: [47, 49],
1795
+ // Bright color
1796
+ bgBlackBright: [100, 49],
1797
+ bgGray: [100, 49],
1798
+ // Alias of `bgBlackBright`
1799
+ bgGrey: [100, 49],
1800
+ // Alias of `bgBlackBright`
1801
+ bgRedBright: [101, 49],
1802
+ bgGreenBright: [102, 49],
1803
+ bgYellowBright: [103, 49],
1804
+ bgBlueBright: [104, 49],
1805
+ bgMagentaBright: [105, 49],
1806
+ bgCyanBright: [106, 49],
1807
+ bgWhiteBright: [107, 49]
1808
+ }
1809
+ };
1810
+ Object.keys(styles.modifier);
1811
+ var foregroundColorNames = Object.keys(styles.color);
1812
+ var backgroundColorNames = Object.keys(styles.bgColor);
1813
+ [...foregroundColorNames, ...backgroundColorNames];
1814
+ function assembleStyles() {
1815
+ const codes = /* @__PURE__ */ new Map();
1816
+ for (const [groupName, group2] of Object.entries(styles)) {
1817
+ for (const [styleName, style] of Object.entries(group2)) {
1818
+ styles[styleName] = {
1819
+ open: `\x1B[${style[0]}m`,
1820
+ close: `\x1B[${style[1]}m`
1821
+ };
1822
+ group2[styleName] = styles[styleName];
1823
+ codes.set(style[0], style[1]);
1824
+ }
1825
+ Object.defineProperty(styles, groupName, {
1826
+ value: group2,
1827
+ enumerable: false
1828
+ });
1829
+ }
1830
+ Object.defineProperty(styles, "codes", {
1831
+ value: codes,
1832
+ enumerable: false
1833
+ });
1834
+ styles.color.close = "\x1B[39m";
1835
+ styles.bgColor.close = "\x1B[49m";
1836
+ styles.color.ansi = wrapAnsi16();
1837
+ styles.color.ansi256 = wrapAnsi256();
1838
+ styles.color.ansi16m = wrapAnsi16m();
1839
+ styles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);
1840
+ styles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);
1841
+ styles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);
1842
+ Object.defineProperties(styles, {
1843
+ rgbToAnsi256: {
1844
+ value(red, green, blue) {
1845
+ if (red === green && green === blue) {
1846
+ if (red < 8) {
1847
+ return 16;
1848
+ }
1849
+ if (red > 248) {
1850
+ return 231;
1851
+ }
1852
+ return Math.round((red - 8) / 247 * 24) + 232;
1853
+ }
1854
+ return 16 + 36 * Math.round(red / 255 * 5) + 6 * Math.round(green / 255 * 5) + Math.round(blue / 255 * 5);
1855
+ },
1856
+ enumerable: false
1857
+ },
1858
+ hexToRgb: {
1859
+ value(hex) {
1860
+ const matches = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));
1861
+ if (!matches) {
1862
+ return [0, 0, 0];
1863
+ }
1864
+ let [colorString] = matches;
1865
+ if (colorString.length === 3) {
1866
+ colorString = [...colorString].map((character) => character + character).join("");
1867
+ }
1868
+ const integer = Number.parseInt(colorString, 16);
1869
+ return [
1870
+ /* eslint-disable no-bitwise */
1871
+ integer >> 16 & 255,
1872
+ integer >> 8 & 255,
1873
+ integer & 255
1874
+ /* eslint-enable no-bitwise */
1875
+ ];
1876
+ },
1877
+ enumerable: false
1878
+ },
1879
+ hexToAnsi256: {
1880
+ value: (hex) => styles.rgbToAnsi256(...styles.hexToRgb(hex)),
1881
+ enumerable: false
1882
+ },
1883
+ ansi256ToAnsi: {
1884
+ value(code) {
1885
+ if (code < 8) {
1886
+ return 30 + code;
1887
+ }
1888
+ if (code < 16) {
1889
+ return 90 + (code - 8);
1890
+ }
1891
+ let red;
1892
+ let green;
1893
+ let blue;
1894
+ if (code >= 232) {
1895
+ red = ((code - 232) * 10 + 8) / 255;
1896
+ green = red;
1897
+ blue = red;
1898
+ } else {
1899
+ code -= 16;
1900
+ const remainder = code % 36;
1901
+ red = Math.floor(code / 36) / 5;
1902
+ green = Math.floor(remainder / 6) / 5;
1903
+ blue = remainder % 6 / 5;
1904
+ }
1905
+ const value = Math.max(red, green, blue) * 2;
1906
+ if (value === 0) {
1907
+ return 30;
1908
+ }
1909
+ let result = 30 + (Math.round(blue) << 2 | Math.round(green) << 1 | Math.round(red));
1910
+ if (value === 2) {
1911
+ result += 60;
1912
+ }
1913
+ return result;
1914
+ },
1915
+ enumerable: false
1916
+ },
1917
+ rgbToAnsi: {
1918
+ value: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),
1919
+ enumerable: false
1920
+ },
1921
+ hexToAnsi: {
1922
+ value: (hex) => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),
1923
+ enumerable: false
1924
+ }
1925
+ });
1926
+ return styles;
1927
+ }
1928
+ var ansiStyles = assembleStyles();
1929
+ var ansi_styles_default = ansiStyles;
1930
+ function hasFlag(flag, argv2 = globalThis.Deno ? globalThis.Deno.args : process6__namespace.default.argv) {
1931
+ const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
1932
+ const position = argv2.indexOf(prefix + flag);
1933
+ const terminatorPosition = argv2.indexOf("--");
1934
+ return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
1935
+ }
1936
+ var { env } = process6__namespace.default;
1937
+ var flagForceColor;
1938
+ if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) {
1939
+ flagForceColor = 0;
1940
+ } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) {
1941
+ flagForceColor = 1;
1942
+ }
1943
+ function envForceColor() {
1944
+ if ("FORCE_COLOR" in env) {
1945
+ if (env.FORCE_COLOR === "true") {
1946
+ return 1;
1947
+ }
1948
+ if (env.FORCE_COLOR === "false") {
1949
+ return 0;
1950
+ }
1951
+ return env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);
1952
+ }
1953
+ }
1954
+ function translateLevel(level) {
1955
+ if (level === 0) {
1956
+ return false;
1957
+ }
1958
+ return {
1959
+ level,
1960
+ hasBasic: true,
1961
+ has256: level >= 2,
1962
+ has16m: level >= 3
1963
+ };
1964
+ }
1965
+ function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
1966
+ const noFlagForceColor = envForceColor();
1967
+ if (noFlagForceColor !== void 0) {
1968
+ flagForceColor = noFlagForceColor;
1969
+ }
1970
+ const forceColor = sniffFlags ? flagForceColor : noFlagForceColor;
1971
+ if (forceColor === 0) {
1972
+ return 0;
1973
+ }
1974
+ if (sniffFlags) {
1975
+ if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) {
1976
+ return 3;
1977
+ }
1978
+ if (hasFlag("color=256")) {
1979
+ return 2;
1980
+ }
1981
+ }
1982
+ if ("TF_BUILD" in env && "AGENT_NAME" in env) {
1983
+ return 1;
1984
+ }
1985
+ if (haveStream && !streamIsTTY && forceColor === void 0) {
1986
+ return 0;
1987
+ }
1988
+ const min = forceColor || 0;
1989
+ if (env.TERM === "dumb") {
1990
+ return min;
1991
+ }
1992
+ if (process6__namespace.default.platform === "win32") {
1993
+ const osRelease = os__default.default.release().split(".");
1994
+ if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
1995
+ return Number(osRelease[2]) >= 14931 ? 3 : 2;
1996
+ }
1997
+ return 1;
1998
+ }
1999
+ if ("CI" in env) {
2000
+ if ("GITHUB_ACTIONS" in env || "GITEA_ACTIONS" in env) {
2001
+ return 3;
2002
+ }
2003
+ if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign) => sign in env) || env.CI_NAME === "codeship") {
2004
+ return 1;
2005
+ }
2006
+ return min;
2007
+ }
2008
+ if ("TEAMCITY_VERSION" in env) {
2009
+ return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
2010
+ }
2011
+ if (env.COLORTERM === "truecolor") {
2012
+ return 3;
2013
+ }
2014
+ if (env.TERM === "xterm-kitty") {
2015
+ return 3;
2016
+ }
2017
+ if ("TERM_PROGRAM" in env) {
2018
+ const version = Number.parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
2019
+ switch (env.TERM_PROGRAM) {
2020
+ case "iTerm.app": {
2021
+ return version >= 3 ? 3 : 2;
2022
+ }
2023
+ case "Apple_Terminal": {
2024
+ return 2;
2025
+ }
2026
+ }
2027
+ }
2028
+ if (/-256(color)?$/i.test(env.TERM)) {
2029
+ return 2;
2030
+ }
2031
+ if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
2032
+ return 1;
2033
+ }
2034
+ if ("COLORTERM" in env) {
2035
+ return 1;
2036
+ }
2037
+ return min;
2038
+ }
2039
+ function createSupportsColor(stream, options = {}) {
2040
+ const level = _supportsColor(stream, {
2041
+ streamIsTTY: stream && stream.isTTY,
2042
+ ...options
2043
+ });
2044
+ return translateLevel(level);
2045
+ }
2046
+ var supportsColor = {
2047
+ stdout: createSupportsColor({ isTTY: tty__default.default.isatty(1) }),
2048
+ stderr: createSupportsColor({ isTTY: tty__default.default.isatty(2) })
2049
+ };
2050
+ var supports_color_default = supportsColor;
2051
+
2052
+ // node_modules/.pnpm/chalk@5.3.0/node_modules/chalk/source/utilities.js
2053
+ function stringReplaceAll(string, substring, replacer) {
2054
+ let index = string.indexOf(substring);
2055
+ if (index === -1) {
2056
+ return string;
2057
+ }
2058
+ const substringLength = substring.length;
2059
+ let endIndex = 0;
2060
+ let returnValue = "";
2061
+ do {
2062
+ returnValue += string.slice(endIndex, index) + substring + replacer;
2063
+ endIndex = index + substringLength;
2064
+ index = string.indexOf(substring, endIndex);
2065
+ } while (index !== -1);
2066
+ returnValue += string.slice(endIndex);
2067
+ return returnValue;
2068
+ }
2069
+ function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {
2070
+ let endIndex = 0;
2071
+ let returnValue = "";
2072
+ do {
2073
+ const gotCR = string[index - 1] === "\r";
2074
+ returnValue += string.slice(endIndex, gotCR ? index - 1 : index) + prefix + (gotCR ? "\r\n" : "\n") + postfix;
2075
+ endIndex = index + 1;
2076
+ index = string.indexOf("\n", endIndex);
2077
+ } while (index !== -1);
2078
+ returnValue += string.slice(endIndex);
2079
+ return returnValue;
2080
+ }
2081
+
2082
+ // node_modules/.pnpm/chalk@5.3.0/node_modules/chalk/source/index.js
2083
+ var { stdout: stdoutColor, stderr: stderrColor } = supports_color_default;
2084
+ var GENERATOR = Symbol("GENERATOR");
2085
+ var STYLER = Symbol("STYLER");
2086
+ var IS_EMPTY = Symbol("IS_EMPTY");
2087
+ var levelMapping = [
2088
+ "ansi",
2089
+ "ansi",
2090
+ "ansi256",
2091
+ "ansi16m"
2092
+ ];
2093
+ var styles2 = /* @__PURE__ */ Object.create(null);
2094
+ var applyOptions = (object, options = {}) => {
2095
+ if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {
2096
+ throw new Error("The `level` option should be an integer from 0 to 3");
2097
+ }
2098
+ const colorLevel = stdoutColor ? stdoutColor.level : 0;
2099
+ object.level = options.level === void 0 ? colorLevel : options.level;
2100
+ };
2101
+ var chalkFactory = (options) => {
2102
+ const chalk2 = (...strings) => strings.join(" ");
2103
+ applyOptions(chalk2, options);
2104
+ Object.setPrototypeOf(chalk2, createChalk.prototype);
2105
+ return chalk2;
2106
+ };
2107
+ function createChalk(options) {
2108
+ return chalkFactory(options);
2109
+ }
2110
+ Object.setPrototypeOf(createChalk.prototype, Function.prototype);
2111
+ for (const [styleName, style] of Object.entries(ansi_styles_default)) {
2112
+ styles2[styleName] = {
2113
+ get() {
2114
+ const builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);
2115
+ Object.defineProperty(this, styleName, { value: builder });
2116
+ return builder;
2117
+ }
2118
+ };
2119
+ }
2120
+ styles2.visible = {
2121
+ get() {
2122
+ const builder = createBuilder(this, this[STYLER], true);
2123
+ Object.defineProperty(this, "visible", { value: builder });
2124
+ return builder;
2125
+ }
2126
+ };
2127
+ var getModelAnsi = (model, level, type, ...arguments_) => {
2128
+ if (model === "rgb") {
2129
+ if (level === "ansi16m") {
2130
+ return ansi_styles_default[type].ansi16m(...arguments_);
2131
+ }
2132
+ if (level === "ansi256") {
2133
+ return ansi_styles_default[type].ansi256(ansi_styles_default.rgbToAnsi256(...arguments_));
2134
+ }
2135
+ return ansi_styles_default[type].ansi(ansi_styles_default.rgbToAnsi(...arguments_));
2136
+ }
2137
+ if (model === "hex") {
2138
+ return getModelAnsi("rgb", level, type, ...ansi_styles_default.hexToRgb(...arguments_));
2139
+ }
2140
+ return ansi_styles_default[type][model](...arguments_);
2141
+ };
2142
+ var usedModels = ["rgb", "hex", "ansi256"];
2143
+ for (const model of usedModels) {
2144
+ styles2[model] = {
2145
+ get() {
2146
+ const { level } = this;
2147
+ return function(...arguments_) {
2148
+ const styler = createStyler(getModelAnsi(model, levelMapping[level], "color", ...arguments_), ansi_styles_default.color.close, this[STYLER]);
2149
+ return createBuilder(this, styler, this[IS_EMPTY]);
2150
+ };
2151
+ }
2152
+ };
2153
+ const bgModel = "bg" + model[0].toUpperCase() + model.slice(1);
2154
+ styles2[bgModel] = {
2155
+ get() {
2156
+ const { level } = this;
2157
+ return function(...arguments_) {
2158
+ const styler = createStyler(getModelAnsi(model, levelMapping[level], "bgColor", ...arguments_), ansi_styles_default.bgColor.close, this[STYLER]);
2159
+ return createBuilder(this, styler, this[IS_EMPTY]);
2160
+ };
2161
+ }
2162
+ };
2163
+ }
2164
+ var proto = Object.defineProperties(() => {
2165
+ }, {
2166
+ ...styles2,
2167
+ level: {
2168
+ enumerable: true,
2169
+ get() {
2170
+ return this[GENERATOR].level;
2171
+ },
2172
+ set(level) {
2173
+ this[GENERATOR].level = level;
2174
+ }
2175
+ }
2176
+ });
2177
+ var createStyler = (open, close, parent) => {
2178
+ let openAll;
2179
+ let closeAll;
2180
+ if (parent === void 0) {
2181
+ openAll = open;
2182
+ closeAll = close;
2183
+ } else {
2184
+ openAll = parent.openAll + open;
2185
+ closeAll = close + parent.closeAll;
2186
+ }
2187
+ return {
2188
+ open,
2189
+ close,
2190
+ openAll,
2191
+ closeAll,
2192
+ parent
2193
+ };
2194
+ };
2195
+ var createBuilder = (self, _styler, _isEmpty) => {
2196
+ const builder = (...arguments_) => applyStyle(builder, arguments_.length === 1 ? "" + arguments_[0] : arguments_.join(" "));
2197
+ Object.setPrototypeOf(builder, proto);
2198
+ builder[GENERATOR] = self;
2199
+ builder[STYLER] = _styler;
2200
+ builder[IS_EMPTY] = _isEmpty;
2201
+ return builder;
2202
+ };
2203
+ var applyStyle = (self, string) => {
2204
+ if (self.level <= 0 || !string) {
2205
+ return self[IS_EMPTY] ? "" : string;
2206
+ }
2207
+ let styler = self[STYLER];
2208
+ if (styler === void 0) {
2209
+ return string;
2210
+ }
2211
+ const { openAll, closeAll } = styler;
2212
+ if (string.includes("\x1B")) {
2213
+ while (styler !== void 0) {
2214
+ string = stringReplaceAll(string, styler.close, styler.open);
2215
+ styler = styler.parent;
2216
+ }
2217
+ }
2218
+ const lfIndex = string.indexOf("\n");
2219
+ if (lfIndex !== -1) {
2220
+ string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);
2221
+ }
2222
+ return openAll + string + closeAll;
2223
+ };
2224
+ Object.defineProperties(createChalk.prototype, styles2);
2225
+ var chalk = createChalk();
2226
+ createChalk({ level: stderrColor ? stderrColor.level : 0 });
2227
+ var source_default = chalk;
2228
+
2229
+ // node_modules/.pnpm/mimic-function@5.0.1/node_modules/mimic-function/index.js
2230
+ var copyProperty = (to, from, property, ignoreNonConfigurable) => {
2231
+ if (property === "length" || property === "prototype") {
2232
+ return;
2233
+ }
2234
+ if (property === "arguments" || property === "caller") {
2235
+ return;
2236
+ }
2237
+ const toDescriptor = Object.getOwnPropertyDescriptor(to, property);
2238
+ const fromDescriptor = Object.getOwnPropertyDescriptor(from, property);
2239
+ if (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {
2240
+ return;
2241
+ }
2242
+ Object.defineProperty(to, property, fromDescriptor);
2243
+ };
2244
+ var canCopyProperty = function(toDescriptor, fromDescriptor) {
2245
+ return toDescriptor === void 0 || toDescriptor.configurable || toDescriptor.writable === fromDescriptor.writable && toDescriptor.enumerable === fromDescriptor.enumerable && toDescriptor.configurable === fromDescriptor.configurable && (toDescriptor.writable || toDescriptor.value === fromDescriptor.value);
2246
+ };
2247
+ var changePrototype = (to, from) => {
2248
+ const fromPrototype = Object.getPrototypeOf(from);
2249
+ if (fromPrototype === Object.getPrototypeOf(to)) {
2250
+ return;
2251
+ }
2252
+ Object.setPrototypeOf(to, fromPrototype);
2253
+ };
2254
+ var wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/
2255
+ ${fromBody}`;
2256
+ var toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, "toString");
2257
+ var toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, "name");
2258
+ var changeToString = (to, from, name) => {
2259
+ const withName = name === "" ? "" : `with ${name.trim()}() `;
2260
+ const newToString = wrappedToString.bind(null, withName, from.toString());
2261
+ Object.defineProperty(newToString, "name", toStringName);
2262
+ const { writable, enumerable, configurable } = toStringDescriptor;
2263
+ Object.defineProperty(to, "toString", { value: newToString, writable, enumerable, configurable });
2264
+ };
2265
+ function mimicFunction(to, from, { ignoreNonConfigurable = false } = {}) {
2266
+ const { name } = to;
2267
+ for (const property of Reflect.ownKeys(from)) {
2268
+ copyProperty(to, from, property, ignoreNonConfigurable);
2269
+ }
2270
+ changePrototype(to, from);
2271
+ changeToString(to, from, name);
2272
+ return to;
2273
+ }
2274
+
2275
+ // node_modules/.pnpm/onetime@7.0.0/node_modules/onetime/index.js
2276
+ var calledFunctions = /* @__PURE__ */ new WeakMap();
2277
+ var onetime = (function_, options = {}) => {
2278
+ if (typeof function_ !== "function") {
2279
+ throw new TypeError("Expected a function");
2280
+ }
2281
+ let returnValue;
2282
+ let callCount = 0;
2283
+ const functionName = function_.displayName || function_.name || "<anonymous>";
2284
+ const onetime2 = function(...arguments_) {
2285
+ calledFunctions.set(onetime2, ++callCount);
2286
+ if (callCount === 1) {
2287
+ returnValue = function_.apply(this, arguments_);
2288
+ function_ = void 0;
2289
+ } else if (options.throw === true) {
2290
+ throw new Error(`Function \`${functionName}\` can only be called once`);
2291
+ }
2292
+ return returnValue;
2293
+ };
2294
+ mimicFunction(onetime2, function_);
2295
+ calledFunctions.set(onetime2, callCount);
2296
+ return onetime2;
2297
+ };
2298
+ onetime.callCount = (function_) => {
2299
+ if (!calledFunctions.has(function_)) {
2300
+ throw new Error(`The given function \`${function_.name}\` is not wrapped by the \`onetime\` package`);
2301
+ }
2302
+ return calledFunctions.get(function_);
2303
+ };
2304
+ var onetime_default = onetime;
2305
+
2306
+ // node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/signals.js
2307
+ var signals = [];
2308
+ signals.push("SIGHUP", "SIGINT", "SIGTERM");
2309
+ if (process.platform !== "win32") {
2310
+ signals.push(
2311
+ "SIGALRM",
2312
+ "SIGABRT",
2313
+ "SIGVTALRM",
2314
+ "SIGXCPU",
2315
+ "SIGXFSZ",
2316
+ "SIGUSR2",
2317
+ "SIGTRAP",
2318
+ "SIGSYS",
2319
+ "SIGQUIT",
2320
+ "SIGIOT"
2321
+ // should detect profiler and enable/disable accordingly.
2322
+ // see #21
2323
+ // 'SIGPROF'
2324
+ );
2325
+ }
2326
+ if (process.platform === "linux") {
2327
+ signals.push("SIGIO", "SIGPOLL", "SIGPWR", "SIGSTKFLT");
2328
+ }
2329
+
2330
+ // node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/index.js
2331
+ var processOk = (process11) => !!process11 && typeof process11 === "object" && typeof process11.removeListener === "function" && typeof process11.emit === "function" && typeof process11.reallyExit === "function" && typeof process11.listeners === "function" && typeof process11.kill === "function" && typeof process11.pid === "number" && typeof process11.on === "function";
2332
+ var kExitEmitter = Symbol.for("signal-exit emitter");
2333
+ var global = globalThis;
2334
+ var ObjectDefineProperty = Object.defineProperty.bind(Object);
2335
+ var Emitter = class {
2336
+ emitted = {
2337
+ afterExit: false,
2338
+ exit: false
2339
+ };
2340
+ listeners = {
2341
+ afterExit: [],
2342
+ exit: []
2343
+ };
2344
+ count = 0;
2345
+ id = Math.random();
2346
+ constructor() {
2347
+ if (global[kExitEmitter]) {
2348
+ return global[kExitEmitter];
2349
+ }
2350
+ ObjectDefineProperty(global, kExitEmitter, {
2351
+ value: this,
2352
+ writable: false,
2353
+ enumerable: false,
2354
+ configurable: false
2355
+ });
2356
+ }
2357
+ on(ev, fn) {
2358
+ this.listeners[ev].push(fn);
2359
+ }
2360
+ removeListener(ev, fn) {
2361
+ const list = this.listeners[ev];
2362
+ const i = list.indexOf(fn);
2363
+ if (i === -1) {
2364
+ return;
2365
+ }
2366
+ if (i === 0 && list.length === 1) {
2367
+ list.length = 0;
2368
+ } else {
2369
+ list.splice(i, 1);
2370
+ }
2371
+ }
2372
+ emit(ev, code, signal) {
2373
+ if (this.emitted[ev]) {
2374
+ return false;
2375
+ }
2376
+ this.emitted[ev] = true;
2377
+ let ret = false;
2378
+ for (const fn of this.listeners[ev]) {
2379
+ ret = fn(code, signal) === true || ret;
2380
+ }
2381
+ if (ev === "exit") {
2382
+ ret = this.emit("afterExit", code, signal) || ret;
2383
+ }
2384
+ return ret;
2385
+ }
2386
+ };
2387
+ var SignalExitBase = class {
2388
+ };
2389
+ var signalExitWrap = (handler) => {
2390
+ return {
2391
+ onExit(cb, opts) {
2392
+ return handler.onExit(cb, opts);
2393
+ },
2394
+ load() {
2395
+ return handler.load();
2396
+ },
2397
+ unload() {
2398
+ return handler.unload();
2399
+ }
2400
+ };
2401
+ };
2402
+ var SignalExitFallback = class extends SignalExitBase {
2403
+ onExit() {
2404
+ return () => {
2405
+ };
2406
+ }
2407
+ load() {
2408
+ }
2409
+ unload() {
2410
+ }
2411
+ };
2412
+ var SignalExit = class extends SignalExitBase {
2413
+ // "SIGHUP" throws an `ENOSYS` error on Windows,
2414
+ // so use a supported signal instead
2415
+ /* c8 ignore start */
2416
+ #hupSig = process3.platform === "win32" ? "SIGINT" : "SIGHUP";
2417
+ /* c8 ignore stop */
2418
+ #emitter = new Emitter();
2419
+ #process;
2420
+ #originalProcessEmit;
2421
+ #originalProcessReallyExit;
2422
+ #sigListeners = {};
2423
+ #loaded = false;
2424
+ constructor(process11) {
2425
+ super();
2426
+ this.#process = process11;
2427
+ this.#sigListeners = {};
2428
+ for (const sig of signals) {
2429
+ this.#sigListeners[sig] = () => {
2430
+ const listeners = this.#process.listeners(sig);
2431
+ let { count } = this.#emitter;
2432
+ const p = process11;
2433
+ if (typeof p.__signal_exit_emitter__ === "object" && typeof p.__signal_exit_emitter__.count === "number") {
2434
+ count += p.__signal_exit_emitter__.count;
2435
+ }
2436
+ if (listeners.length === count) {
2437
+ this.unload();
2438
+ const ret = this.#emitter.emit("exit", null, sig);
2439
+ const s = sig === "SIGHUP" ? this.#hupSig : sig;
2440
+ if (!ret)
2441
+ process11.kill(process11.pid, s);
2442
+ }
2443
+ };
2444
+ }
2445
+ this.#originalProcessReallyExit = process11.reallyExit;
2446
+ this.#originalProcessEmit = process11.emit;
2447
+ }
2448
+ onExit(cb, opts) {
2449
+ if (!processOk(this.#process)) {
2450
+ return () => {
2451
+ };
2452
+ }
2453
+ if (this.#loaded === false) {
2454
+ this.load();
2455
+ }
2456
+ const ev = (opts == null ? void 0 : opts.alwaysLast) ? "afterExit" : "exit";
2457
+ this.#emitter.on(ev, cb);
2458
+ return () => {
2459
+ this.#emitter.removeListener(ev, cb);
2460
+ if (this.#emitter.listeners["exit"].length === 0 && this.#emitter.listeners["afterExit"].length === 0) {
2461
+ this.unload();
2462
+ }
2463
+ };
2464
+ }
2465
+ load() {
2466
+ if (this.#loaded) {
2467
+ return;
2468
+ }
2469
+ this.#loaded = true;
2470
+ this.#emitter.count += 1;
2471
+ for (const sig of signals) {
2472
+ try {
2473
+ const fn = this.#sigListeners[sig];
2474
+ if (fn)
2475
+ this.#process.on(sig, fn);
2476
+ } catch (_) {
2477
+ }
2478
+ }
2479
+ this.#process.emit = (ev, ...a) => {
2480
+ return this.#processEmit(ev, ...a);
2481
+ };
2482
+ this.#process.reallyExit = (code) => {
2483
+ return this.#processReallyExit(code);
2484
+ };
2485
+ }
2486
+ unload() {
2487
+ if (!this.#loaded) {
2488
+ return;
2489
+ }
2490
+ this.#loaded = false;
2491
+ signals.forEach((sig) => {
2492
+ const listener = this.#sigListeners[sig];
2493
+ if (!listener) {
2494
+ throw new Error("Listener not defined for signal: " + sig);
2495
+ }
2496
+ try {
2497
+ this.#process.removeListener(sig, listener);
2498
+ } catch (_) {
2499
+ }
2500
+ });
2501
+ this.#process.emit = this.#originalProcessEmit;
2502
+ this.#process.reallyExit = this.#originalProcessReallyExit;
2503
+ this.#emitter.count -= 1;
2504
+ }
2505
+ #processReallyExit(code) {
2506
+ if (!processOk(this.#process)) {
2507
+ return 0;
2508
+ }
2509
+ this.#process.exitCode = code || 0;
2510
+ this.#emitter.emit("exit", this.#process.exitCode, null);
2511
+ return this.#originalProcessReallyExit.call(this.#process, this.#process.exitCode);
2512
+ }
2513
+ #processEmit(ev, ...args) {
2514
+ const og = this.#originalProcessEmit;
2515
+ if (ev === "exit" && processOk(this.#process)) {
2516
+ if (typeof args[0] === "number") {
2517
+ this.#process.exitCode = args[0];
2518
+ }
2519
+ const ret = og.call(this.#process, ev, ...args);
2520
+ this.#emitter.emit("exit", this.#process.exitCode, null);
2521
+ return ret;
2522
+ } else {
2523
+ return og.call(this.#process, ev, ...args);
2524
+ }
2525
+ }
2526
+ };
2527
+ var process3 = globalThis.process;
2528
+ var {
2529
+ /**
2530
+ * Called when the process is exiting, whether via signal, explicit
2531
+ * exit, or running out of stuff to do.
2532
+ *
2533
+ * If the global process object is not suitable for instrumentation,
2534
+ * then this will be a no-op.
2535
+ *
2536
+ * Returns a function that may be used to unload signal-exit.
2537
+ */
2538
+ onExit,
2539
+ /**
2540
+ * Load the listeners. Likely you never need to call this, unless
2541
+ * doing a rather deep integration with signal-exit functionality.
2542
+ * Mostly exposed for the benefit of testing.
2543
+ *
2544
+ * @internal
2545
+ */
2546
+ load,
2547
+ /**
2548
+ * Unload the listeners. Likely you never need to call this, unless
2549
+ * doing a rather deep integration with signal-exit functionality.
2550
+ * Mostly exposed for the benefit of testing.
2551
+ *
2552
+ * @internal
2553
+ */
2554
+ unload
2555
+ } = signalExitWrap(processOk(process3) ? new SignalExit(process3) : new SignalExitFallback());
2556
+
2557
+ // node_modules/.pnpm/restore-cursor@5.1.0/node_modules/restore-cursor/index.js
2558
+ var terminal = process6__namespace.default.stderr.isTTY ? process6__namespace.default.stderr : process6__namespace.default.stdout.isTTY ? process6__namespace.default.stdout : void 0;
2559
+ var restoreCursor = terminal ? onetime_default(() => {
2560
+ onExit(() => {
2561
+ terminal.write("\x1B[?25h");
2562
+ }, { alwaysLast: true });
2563
+ }) : () => {
2564
+ };
2565
+ var restore_cursor_default = restoreCursor;
2566
+
2567
+ // node_modules/.pnpm/cli-cursor@5.0.0/node_modules/cli-cursor/index.js
2568
+ var isHidden = false;
2569
+ var cliCursor = {};
2570
+ cliCursor.show = (writableStream = process6__namespace.default.stderr) => {
2571
+ if (!writableStream.isTTY) {
2572
+ return;
2573
+ }
2574
+ isHidden = false;
2575
+ writableStream.write("\x1B[?25h");
2576
+ };
2577
+ cliCursor.hide = (writableStream = process6__namespace.default.stderr) => {
2578
+ if (!writableStream.isTTY) {
2579
+ return;
2580
+ }
2581
+ restore_cursor_default();
2582
+ isHidden = true;
2583
+ writableStream.write("\x1B[?25l");
2584
+ };
2585
+ cliCursor.toggle = (force, writableStream) => {
2586
+ if (force !== void 0) {
2587
+ isHidden = force;
2588
+ }
2589
+ if (isHidden) {
2590
+ cliCursor.show(writableStream);
2591
+ } else {
2592
+ cliCursor.hide(writableStream);
2593
+ }
2594
+ };
2595
+ var cli_cursor_default = cliCursor;
2596
+
2597
+ // node_modules/.pnpm/ora@8.1.1/node_modules/ora/index.js
2598
+ var import_cli_spinners = __toESM(require_cli_spinners());
2599
+ function isUnicodeSupported() {
2600
+ if (process6__namespace.default.platform !== "win32") {
2601
+ return process6__namespace.default.env.TERM !== "linux";
2602
+ }
2603
+ return Boolean(process6__namespace.default.env.CI) || Boolean(process6__namespace.default.env.WT_SESSION) || Boolean(process6__namespace.default.env.TERMINUS_SUBLIME) || process6__namespace.default.env.ConEmuTask === "{cmd::Cmder}" || process6__namespace.default.env.TERM_PROGRAM === "Terminus-Sublime" || process6__namespace.default.env.TERM_PROGRAM === "vscode" || process6__namespace.default.env.TERM === "xterm-256color" || process6__namespace.default.env.TERM === "alacritty" || process6__namespace.default.env.TERMINAL_EMULATOR === "JetBrains-JediTerm";
2604
+ }
2605
+
2606
+ // node_modules/.pnpm/log-symbols@6.0.0/node_modules/log-symbols/index.js
2607
+ var main = {
2608
+ info: source_default.blue("\u2139"),
2609
+ success: source_default.green("\u2714"),
2610
+ warning: source_default.yellow("\u26A0"),
2611
+ error: source_default.red("\u2716")
2612
+ };
2613
+ var fallback = {
2614
+ info: source_default.blue("i"),
2615
+ success: source_default.green("\u221A"),
2616
+ warning: source_default.yellow("\u203C"),
2617
+ error: source_default.red("\xD7")
2618
+ };
2619
+ var logSymbols = isUnicodeSupported() ? main : fallback;
2620
+ var log_symbols_default = logSymbols;
2621
+
2622
+ // node_modules/.pnpm/ansi-regex@6.1.0/node_modules/ansi-regex/index.js
2623
+ function ansiRegex({ onlyFirst = false } = {}) {
2624
+ const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)";
2625
+ const pattern = [
2626
+ `[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?${ST})`,
2627
+ "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"
2628
+ ].join("|");
2629
+ return new RegExp(pattern, onlyFirst ? void 0 : "g");
2630
+ }
2631
+
2632
+ // node_modules/.pnpm/strip-ansi@7.1.0/node_modules/strip-ansi/index.js
2633
+ var regex = ansiRegex();
2634
+ function stripAnsi(string) {
2635
+ if (typeof string !== "string") {
2636
+ throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
2637
+ }
2638
+ return string.replace(regex, "");
2639
+ }
2640
+
2641
+ // node_modules/.pnpm/get-east-asian-width@1.3.0/node_modules/get-east-asian-width/lookup.js
2642
+ function isAmbiguous(x) {
2643
+ return x === 161 || x === 164 || x === 167 || x === 168 || x === 170 || x === 173 || x === 174 || x >= 176 && x <= 180 || x >= 182 && x <= 186 || x >= 188 && x <= 191 || x === 198 || x === 208 || x === 215 || x === 216 || x >= 222 && x <= 225 || x === 230 || x >= 232 && x <= 234 || x === 236 || x === 237 || x === 240 || x === 242 || x === 243 || x >= 247 && x <= 250 || x === 252 || x === 254 || x === 257 || x === 273 || x === 275 || x === 283 || x === 294 || x === 295 || x === 299 || x >= 305 && x <= 307 || x === 312 || x >= 319 && x <= 322 || x === 324 || x >= 328 && x <= 331 || x === 333 || x === 338 || x === 339 || x === 358 || x === 359 || x === 363 || x === 462 || x === 464 || x === 466 || x === 468 || x === 470 || x === 472 || x === 474 || x === 476 || x === 593 || x === 609 || x === 708 || x === 711 || x >= 713 && x <= 715 || x === 717 || x === 720 || x >= 728 && x <= 731 || x === 733 || x === 735 || x >= 768 && x <= 879 || x >= 913 && x <= 929 || x >= 931 && x <= 937 || x >= 945 && x <= 961 || x >= 963 && x <= 969 || x === 1025 || x >= 1040 && x <= 1103 || x === 1105 || x === 8208 || x >= 8211 && x <= 8214 || x === 8216 || x === 8217 || x === 8220 || x === 8221 || x >= 8224 && x <= 8226 || x >= 8228 && x <= 8231 || x === 8240 || x === 8242 || x === 8243 || x === 8245 || x === 8251 || x === 8254 || x === 8308 || x === 8319 || x >= 8321 && x <= 8324 || x === 8364 || x === 8451 || x === 8453 || x === 8457 || x === 8467 || x === 8470 || x === 8481 || x === 8482 || x === 8486 || x === 8491 || x === 8531 || x === 8532 || x >= 8539 && x <= 8542 || x >= 8544 && x <= 8555 || x >= 8560 && x <= 8569 || x === 8585 || x >= 8592 && x <= 8601 || x === 8632 || x === 8633 || x === 8658 || x === 8660 || x === 8679 || x === 8704 || x === 8706 || x === 8707 || x === 8711 || x === 8712 || x === 8715 || x === 8719 || x === 8721 || x === 8725 || x === 8730 || x >= 8733 && x <= 8736 || x === 8739 || x === 8741 || x >= 8743 && x <= 8748 || x === 8750 || x >= 8756 && x <= 8759 || x === 8764 || x === 8765 || x === 8776 || x === 8780 || x === 8786 || x === 8800 || x === 8801 || x >= 8804 && x <= 8807 || x === 8810 || x === 8811 || x === 8814 || x === 8815 || x === 8834 || x === 8835 || x === 8838 || x === 8839 || x === 8853 || x === 8857 || x === 8869 || x === 8895 || x === 8978 || x >= 9312 && x <= 9449 || x >= 9451 && x <= 9547 || x >= 9552 && x <= 9587 || x >= 9600 && x <= 9615 || x >= 9618 && x <= 9621 || x === 9632 || x === 9633 || x >= 9635 && x <= 9641 || x === 9650 || x === 9651 || x === 9654 || x === 9655 || x === 9660 || x === 9661 || x === 9664 || x === 9665 || x >= 9670 && x <= 9672 || x === 9675 || x >= 9678 && x <= 9681 || x >= 9698 && x <= 9701 || x === 9711 || x === 9733 || x === 9734 || x === 9737 || x === 9742 || x === 9743 || x === 9756 || x === 9758 || x === 9792 || x === 9794 || x === 9824 || x === 9825 || x >= 9827 && x <= 9829 || x >= 9831 && x <= 9834 || x === 9836 || x === 9837 || x === 9839 || x === 9886 || x === 9887 || x === 9919 || x >= 9926 && x <= 9933 || x >= 9935 && x <= 9939 || x >= 9941 && x <= 9953 || x === 9955 || x === 9960 || x === 9961 || x >= 9963 && x <= 9969 || x === 9972 || x >= 9974 && x <= 9977 || x === 9979 || x === 9980 || x === 9982 || x === 9983 || x === 10045 || x >= 10102 && x <= 10111 || x >= 11094 && x <= 11097 || x >= 12872 && x <= 12879 || x >= 57344 && x <= 63743 || x >= 65024 && x <= 65039 || x === 65533 || x >= 127232 && x <= 127242 || x >= 127248 && x <= 127277 || x >= 127280 && x <= 127337 || x >= 127344 && x <= 127373 || x === 127375 || x === 127376 || x >= 127387 && x <= 127404 || x >= 917760 && x <= 917999 || x >= 983040 && x <= 1048573 || x >= 1048576 && x <= 1114109;
2644
+ }
2645
+ function isFullWidth(x) {
2646
+ return x === 12288 || x >= 65281 && x <= 65376 || x >= 65504 && x <= 65510;
2647
+ }
2648
+ function isWide(x) {
2649
+ return x >= 4352 && x <= 4447 || x === 8986 || x === 8987 || x === 9001 || x === 9002 || x >= 9193 && x <= 9196 || x === 9200 || x === 9203 || x === 9725 || x === 9726 || x === 9748 || x === 9749 || x >= 9776 && x <= 9783 || x >= 9800 && x <= 9811 || x === 9855 || x >= 9866 && x <= 9871 || x === 9875 || x === 9889 || x === 9898 || x === 9899 || x === 9917 || x === 9918 || x === 9924 || x === 9925 || x === 9934 || x === 9940 || x === 9962 || x === 9970 || x === 9971 || x === 9973 || x === 9978 || x === 9981 || x === 9989 || x === 9994 || x === 9995 || x === 10024 || x === 10060 || x === 10062 || x >= 10067 && x <= 10069 || x === 10071 || x >= 10133 && x <= 10135 || x === 10160 || x === 10175 || x === 11035 || x === 11036 || x === 11088 || x === 11093 || x >= 11904 && x <= 11929 || x >= 11931 && x <= 12019 || x >= 12032 && x <= 12245 || x >= 12272 && x <= 12287 || x >= 12289 && x <= 12350 || x >= 12353 && x <= 12438 || x >= 12441 && x <= 12543 || x >= 12549 && x <= 12591 || x >= 12593 && x <= 12686 || x >= 12688 && x <= 12773 || x >= 12783 && x <= 12830 || x >= 12832 && x <= 12871 || x >= 12880 && x <= 42124 || x >= 42128 && x <= 42182 || x >= 43360 && x <= 43388 || x >= 44032 && x <= 55203 || x >= 63744 && x <= 64255 || x >= 65040 && x <= 65049 || x >= 65072 && x <= 65106 || x >= 65108 && x <= 65126 || x >= 65128 && x <= 65131 || x >= 94176 && x <= 94180 || x === 94192 || x === 94193 || x >= 94208 && x <= 100343 || x >= 100352 && x <= 101589 || x >= 101631 && x <= 101640 || x >= 110576 && x <= 110579 || x >= 110581 && x <= 110587 || x === 110589 || x === 110590 || x >= 110592 && x <= 110882 || x === 110898 || x >= 110928 && x <= 110930 || x === 110933 || x >= 110948 && x <= 110951 || x >= 110960 && x <= 111355 || x >= 119552 && x <= 119638 || x >= 119648 && x <= 119670 || x === 126980 || x === 127183 || x === 127374 || x >= 127377 && x <= 127386 || x >= 127488 && x <= 127490 || x >= 127504 && x <= 127547 || x >= 127552 && x <= 127560 || x === 127568 || x === 127569 || x >= 127584 && x <= 127589 || x >= 127744 && x <= 127776 || x >= 127789 && x <= 127797 || x >= 127799 && x <= 127868 || x >= 127870 && x <= 127891 || x >= 127904 && x <= 127946 || x >= 127951 && x <= 127955 || x >= 127968 && x <= 127984 || x === 127988 || x >= 127992 && x <= 128062 || x === 128064 || x >= 128066 && x <= 128252 || x >= 128255 && x <= 128317 || x >= 128331 && x <= 128334 || x >= 128336 && x <= 128359 || x === 128378 || x === 128405 || x === 128406 || x === 128420 || x >= 128507 && x <= 128591 || x >= 128640 && x <= 128709 || x === 128716 || x >= 128720 && x <= 128722 || x >= 128725 && x <= 128727 || x >= 128732 && x <= 128735 || x === 128747 || x === 128748 || x >= 128756 && x <= 128764 || x >= 128992 && x <= 129003 || x === 129008 || x >= 129292 && x <= 129338 || x >= 129340 && x <= 129349 || x >= 129351 && x <= 129535 || x >= 129648 && x <= 129660 || x >= 129664 && x <= 129673 || x >= 129679 && x <= 129734 || x >= 129742 && x <= 129756 || x >= 129759 && x <= 129769 || x >= 129776 && x <= 129784 || x >= 131072 && x <= 196605 || x >= 196608 && x <= 262141;
2650
+ }
2651
+
2652
+ // node_modules/.pnpm/get-east-asian-width@1.3.0/node_modules/get-east-asian-width/index.js
2653
+ function validate(codePoint) {
2654
+ if (!Number.isSafeInteger(codePoint)) {
2655
+ throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
2656
+ }
2657
+ }
2658
+ function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
2659
+ validate(codePoint);
2660
+ if (isFullWidth(codePoint) || isWide(codePoint) || ambiguousAsWide && isAmbiguous(codePoint)) {
2661
+ return 2;
2662
+ }
2663
+ return 1;
2664
+ }
2665
+
2666
+ // node_modules/.pnpm/emoji-regex@10.4.0/node_modules/emoji-regex/index.mjs
2667
+ var emoji_regex_default = () => {
2668
+ return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE89\uDE8F-\uDEC2\uDEC6\uDECE-\uDEDC\uDEDF-\uDEE9]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g;
2669
+ };
2670
+
2671
+ // node_modules/.pnpm/string-width@7.2.0/node_modules/string-width/index.js
2672
+ var segmenter = new Intl.Segmenter();
2673
+ var defaultIgnorableCodePointRegex = new RegExp("^\\p{Default_Ignorable_Code_Point}$", "u");
2674
+ function stringWidth(string, options = {}) {
2675
+ if (typeof string !== "string" || string.length === 0) {
2676
+ return 0;
2677
+ }
2678
+ const {
2679
+ ambiguousIsNarrow = true,
2680
+ countAnsiEscapeCodes = false
2681
+ } = options;
2682
+ if (!countAnsiEscapeCodes) {
2683
+ string = stripAnsi(string);
2684
+ }
2685
+ if (string.length === 0) {
2686
+ return 0;
2687
+ }
2688
+ let width = 0;
2689
+ const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
2690
+ for (const { segment: character } of segmenter.segment(string)) {
2691
+ const codePoint = character.codePointAt(0);
2692
+ if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) {
2693
+ continue;
2694
+ }
2695
+ if (codePoint >= 8203 && codePoint <= 8207 || codePoint === 65279) {
2696
+ continue;
2697
+ }
2698
+ if (codePoint >= 768 && codePoint <= 879 || codePoint >= 6832 && codePoint <= 6911 || codePoint >= 7616 && codePoint <= 7679 || codePoint >= 8400 && codePoint <= 8447 || codePoint >= 65056 && codePoint <= 65071) {
2699
+ continue;
2700
+ }
2701
+ if (codePoint >= 55296 && codePoint <= 57343) {
2702
+ continue;
2703
+ }
2704
+ if (codePoint >= 65024 && codePoint <= 65039) {
2705
+ continue;
2706
+ }
2707
+ if (defaultIgnorableCodePointRegex.test(character)) {
2708
+ continue;
2709
+ }
2710
+ if (emoji_regex_default().test(character)) {
2711
+ width += 2;
2712
+ continue;
2713
+ }
2714
+ width += eastAsianWidth(codePoint, eastAsianWidthOptions);
2715
+ }
2716
+ return width;
2717
+ }
2718
+
2719
+ // node_modules/.pnpm/is-interactive@2.0.0/node_modules/is-interactive/index.js
2720
+ function isInteractive({ stream = process.stdout } = {}) {
2721
+ return Boolean(
2722
+ stream && stream.isTTY && process.env.TERM !== "dumb" && !("CI" in process.env)
2723
+ );
2724
+ }
2725
+ function isUnicodeSupported2() {
2726
+ const { env: env2 } = process6__namespace.default;
2727
+ const { TERM, TERM_PROGRAM } = env2;
2728
+ if (process6__namespace.default.platform !== "win32") {
2729
+ return TERM !== "linux";
2730
+ }
2731
+ return Boolean(env2.WT_SESSION) || Boolean(env2.TERMINUS_SUBLIME) || env2.ConEmuTask === "{cmd::Cmder}" || TERM_PROGRAM === "Terminus-Sublime" || TERM_PROGRAM === "vscode" || TERM === "xterm-256color" || TERM === "alacritty" || TERM === "rxvt-unicode" || TERM === "rxvt-unicode-256color" || env2.TERMINAL_EMULATOR === "JetBrains-JediTerm";
2732
+ }
2733
+ var ASCII_ETX_CODE = 3;
2734
+ var StdinDiscarder = class {
2735
+ #activeCount = 0;
2736
+ start() {
2737
+ this.#activeCount++;
2738
+ if (this.#activeCount === 1) {
2739
+ this.#realStart();
2740
+ }
2741
+ }
2742
+ stop() {
2743
+ if (this.#activeCount <= 0) {
2744
+ throw new Error("`stop` called more times than `start`");
2745
+ }
2746
+ this.#activeCount--;
2747
+ if (this.#activeCount === 0) {
2748
+ this.#realStop();
2749
+ }
2750
+ }
2751
+ #realStart() {
2752
+ if (process6__namespace.default.platform === "win32" || !process6__namespace.default.stdin.isTTY) {
2753
+ return;
2754
+ }
2755
+ process6__namespace.default.stdin.setRawMode(true);
2756
+ process6__namespace.default.stdin.on("data", this.#handleInput);
2757
+ process6__namespace.default.stdin.resume();
2758
+ }
2759
+ #realStop() {
2760
+ if (!process6__namespace.default.stdin.isTTY) {
2761
+ return;
2762
+ }
2763
+ process6__namespace.default.stdin.off("data", this.#handleInput);
2764
+ process6__namespace.default.stdin.pause();
2765
+ process6__namespace.default.stdin.setRawMode(false);
2766
+ }
2767
+ #handleInput(chunk) {
2768
+ if (chunk[0] === ASCII_ETX_CODE) {
2769
+ process6__namespace.default.emit("SIGINT");
2770
+ }
2771
+ }
2772
+ };
2773
+ var stdinDiscarder = new StdinDiscarder();
2774
+ var stdin_discarder_default = stdinDiscarder;
2775
+
2776
+ // node_modules/.pnpm/ora@8.1.1/node_modules/ora/index.js
2777
+ __toESM(require_cli_spinners());
2778
+ var Ora = class {
2779
+ #linesToClear = 0;
2780
+ #isDiscardingStdin = false;
2781
+ #lineCount = 0;
2782
+ #frameIndex = -1;
2783
+ #lastSpinnerFrameTime = 0;
2784
+ #options;
2785
+ #spinner;
2786
+ #stream;
2787
+ #id;
2788
+ #initialInterval;
2789
+ #isEnabled;
2790
+ #isSilent;
2791
+ #indent;
2792
+ #text;
2793
+ #prefixText;
2794
+ #suffixText;
2795
+ color;
2796
+ constructor(options) {
2797
+ if (typeof options === "string") {
2798
+ options = {
2799
+ text: options
2800
+ };
2801
+ }
2802
+ this.#options = {
2803
+ color: "cyan",
2804
+ stream: process6__namespace.default.stderr,
2805
+ discardStdin: true,
2806
+ hideCursor: true,
2807
+ ...options
2808
+ };
2809
+ this.color = this.#options.color;
2810
+ this.spinner = this.#options.spinner;
2811
+ this.#initialInterval = this.#options.interval;
2812
+ this.#stream = this.#options.stream;
2813
+ this.#isEnabled = typeof this.#options.isEnabled === "boolean" ? this.#options.isEnabled : isInteractive({ stream: this.#stream });
2814
+ this.#isSilent = typeof this.#options.isSilent === "boolean" ? this.#options.isSilent : false;
2815
+ this.text = this.#options.text;
2816
+ this.prefixText = this.#options.prefixText;
2817
+ this.suffixText = this.#options.suffixText;
2818
+ this.indent = this.#options.indent;
2819
+ if (process6__namespace.default.env.NODE_ENV === "test") {
2820
+ this._stream = this.#stream;
2821
+ this._isEnabled = this.#isEnabled;
2822
+ Object.defineProperty(this, "_linesToClear", {
2823
+ get() {
2824
+ return this.#linesToClear;
2825
+ },
2826
+ set(newValue) {
2827
+ this.#linesToClear = newValue;
2828
+ }
2829
+ });
2830
+ Object.defineProperty(this, "_frameIndex", {
2831
+ get() {
2832
+ return this.#frameIndex;
2833
+ }
2834
+ });
2835
+ Object.defineProperty(this, "_lineCount", {
2836
+ get() {
2837
+ return this.#lineCount;
2838
+ }
2839
+ });
2840
+ }
2841
+ }
2842
+ get indent() {
2843
+ return this.#indent;
2844
+ }
2845
+ set indent(indent = 0) {
2846
+ if (!(indent >= 0 && Number.isInteger(indent))) {
2847
+ throw new Error("The `indent` option must be an integer from 0 and up");
2848
+ }
2849
+ this.#indent = indent;
2850
+ this.#updateLineCount();
2851
+ }
2852
+ get interval() {
2853
+ return this.#initialInterval ?? this.#spinner.interval ?? 100;
2854
+ }
2855
+ get spinner() {
2856
+ return this.#spinner;
2857
+ }
2858
+ set spinner(spinner) {
2859
+ this.#frameIndex = -1;
2860
+ this.#initialInterval = void 0;
2861
+ if (typeof spinner === "object") {
2862
+ if (spinner.frames === void 0) {
2863
+ throw new Error("The given spinner must have a `frames` property");
2864
+ }
2865
+ this.#spinner = spinner;
2866
+ } else if (!isUnicodeSupported2()) {
2867
+ this.#spinner = import_cli_spinners.default.line;
2868
+ } else if (spinner === void 0) {
2869
+ this.#spinner = import_cli_spinners.default.dots;
2870
+ } else if (spinner !== "default" && import_cli_spinners.default[spinner]) {
2871
+ this.#spinner = import_cli_spinners.default[spinner];
2872
+ } else {
2873
+ throw new Error(`There is no built-in spinner named '${spinner}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`);
2874
+ }
2875
+ }
2876
+ get text() {
2877
+ return this.#text;
2878
+ }
2879
+ set text(value = "") {
2880
+ this.#text = value;
2881
+ this.#updateLineCount();
2882
+ }
2883
+ get prefixText() {
2884
+ return this.#prefixText;
2885
+ }
2886
+ set prefixText(value = "") {
2887
+ this.#prefixText = value;
2888
+ this.#updateLineCount();
2889
+ }
2890
+ get suffixText() {
2891
+ return this.#suffixText;
2892
+ }
2893
+ set suffixText(value = "") {
2894
+ this.#suffixText = value;
2895
+ this.#updateLineCount();
2896
+ }
2897
+ get isSpinning() {
2898
+ return this.#id !== void 0;
2899
+ }
2900
+ #getFullPrefixText(prefixText = this.#prefixText, postfix = " ") {
2901
+ if (typeof prefixText === "string" && prefixText !== "") {
2902
+ return prefixText + postfix;
2903
+ }
2904
+ if (typeof prefixText === "function") {
2905
+ return prefixText() + postfix;
2906
+ }
2907
+ return "";
2908
+ }
2909
+ #getFullSuffixText(suffixText = this.#suffixText, prefix = " ") {
2910
+ if (typeof suffixText === "string" && suffixText !== "") {
2911
+ return prefix + suffixText;
2912
+ }
2913
+ if (typeof suffixText === "function") {
2914
+ return prefix + suffixText();
2915
+ }
2916
+ return "";
2917
+ }
2918
+ #updateLineCount() {
2919
+ const columns = this.#stream.columns ?? 80;
2920
+ const fullPrefixText = this.#getFullPrefixText(this.#prefixText, "-");
2921
+ const fullSuffixText = this.#getFullSuffixText(this.#suffixText, "-");
2922
+ const fullText = " ".repeat(this.#indent) + fullPrefixText + "--" + this.#text + "--" + fullSuffixText;
2923
+ this.#lineCount = 0;
2924
+ for (const line of stripAnsi(fullText).split("\n")) {
2925
+ this.#lineCount += Math.max(1, Math.ceil(stringWidth(line, { countAnsiEscapeCodes: true }) / columns));
2926
+ }
2927
+ }
2928
+ get isEnabled() {
2929
+ return this.#isEnabled && !this.#isSilent;
2930
+ }
2931
+ set isEnabled(value) {
2932
+ if (typeof value !== "boolean") {
2933
+ throw new TypeError("The `isEnabled` option must be a boolean");
2934
+ }
2935
+ this.#isEnabled = value;
2936
+ }
2937
+ get isSilent() {
2938
+ return this.#isSilent;
2939
+ }
2940
+ set isSilent(value) {
2941
+ if (typeof value !== "boolean") {
2942
+ throw new TypeError("The `isSilent` option must be a boolean");
2943
+ }
2944
+ this.#isSilent = value;
2945
+ }
2946
+ frame() {
2947
+ const now = Date.now();
2948
+ if (this.#frameIndex === -1 || now - this.#lastSpinnerFrameTime >= this.interval) {
2949
+ this.#frameIndex = ++this.#frameIndex % this.#spinner.frames.length;
2950
+ this.#lastSpinnerFrameTime = now;
2951
+ }
2952
+ const { frames } = this.#spinner;
2953
+ let frame = frames[this.#frameIndex];
2954
+ if (this.color) {
2955
+ frame = source_default[this.color](frame);
2956
+ }
2957
+ const fullPrefixText = typeof this.#prefixText === "string" && this.#prefixText !== "" ? this.#prefixText + " " : "";
2958
+ const fullText = typeof this.text === "string" ? " " + this.text : "";
2959
+ const fullSuffixText = typeof this.#suffixText === "string" && this.#suffixText !== "" ? " " + this.#suffixText : "";
2960
+ return fullPrefixText + frame + fullText + fullSuffixText;
2961
+ }
2962
+ clear() {
2963
+ if (!this.#isEnabled || !this.#stream.isTTY) {
2964
+ return this;
2965
+ }
2966
+ this.#stream.cursorTo(0);
2967
+ for (let index = 0; index < this.#linesToClear; index++) {
2968
+ if (index > 0) {
2969
+ this.#stream.moveCursor(0, -1);
2970
+ }
2971
+ this.#stream.clearLine(1);
2972
+ }
2973
+ if (this.#indent || this.lastIndent !== this.#indent) {
2974
+ this.#stream.cursorTo(this.#indent);
2975
+ }
2976
+ this.lastIndent = this.#indent;
2977
+ this.#linesToClear = 0;
2978
+ return this;
2979
+ }
2980
+ render() {
2981
+ if (this.#isSilent) {
2982
+ return this;
2983
+ }
2984
+ this.clear();
2985
+ this.#stream.write(this.frame());
2986
+ this.#linesToClear = this.#lineCount;
2987
+ return this;
2988
+ }
2989
+ start(text) {
2990
+ if (text) {
2991
+ this.text = text;
2992
+ }
2993
+ if (this.#isSilent) {
2994
+ return this;
2995
+ }
2996
+ if (!this.#isEnabled) {
2997
+ if (this.text) {
2998
+ this.#stream.write(`- ${this.text}
2999
+ `);
3000
+ }
3001
+ return this;
3002
+ }
3003
+ if (this.isSpinning) {
3004
+ return this;
3005
+ }
3006
+ if (this.#options.hideCursor) {
3007
+ cli_cursor_default.hide(this.#stream);
3008
+ }
3009
+ if (this.#options.discardStdin && process6__namespace.default.stdin.isTTY) {
3010
+ this.#isDiscardingStdin = true;
3011
+ stdin_discarder_default.start();
3012
+ }
3013
+ this.render();
3014
+ this.#id = setInterval(this.render.bind(this), this.interval);
3015
+ return this;
3016
+ }
3017
+ stop() {
3018
+ if (!this.#isEnabled) {
3019
+ return this;
3020
+ }
3021
+ clearInterval(this.#id);
3022
+ this.#id = void 0;
3023
+ this.#frameIndex = 0;
3024
+ this.clear();
3025
+ if (this.#options.hideCursor) {
3026
+ cli_cursor_default.show(this.#stream);
3027
+ }
3028
+ if (this.#options.discardStdin && process6__namespace.default.stdin.isTTY && this.#isDiscardingStdin) {
3029
+ stdin_discarder_default.stop();
3030
+ this.#isDiscardingStdin = false;
3031
+ }
3032
+ return this;
3033
+ }
3034
+ succeed(text) {
3035
+ return this.stopAndPersist({ symbol: log_symbols_default.success, text });
3036
+ }
3037
+ fail(text) {
3038
+ return this.stopAndPersist({ symbol: log_symbols_default.error, text });
3039
+ }
3040
+ warn(text) {
3041
+ return this.stopAndPersist({ symbol: log_symbols_default.warning, text });
3042
+ }
3043
+ info(text) {
3044
+ return this.stopAndPersist({ symbol: log_symbols_default.info, text });
3045
+ }
3046
+ stopAndPersist(options = {}) {
3047
+ if (this.#isSilent) {
3048
+ return this;
3049
+ }
3050
+ const prefixText = options.prefixText ?? this.#prefixText;
3051
+ const fullPrefixText = this.#getFullPrefixText(prefixText, " ");
3052
+ const symbolText = options.symbol ?? " ";
3053
+ const text = options.text ?? this.text;
3054
+ const separatorText = symbolText ? " " : "";
3055
+ const fullText = typeof text === "string" ? separatorText + text : "";
3056
+ const suffixText = options.suffixText ?? this.#suffixText;
3057
+ const fullSuffixText = this.#getFullSuffixText(suffixText, " ");
3058
+ const textToWrite = fullPrefixText + symbolText + fullText + fullSuffixText + "\n";
3059
+ this.stop();
3060
+ this.#stream.write(textToWrite);
3061
+ return this;
3062
+ }
3063
+ };
3064
+ function ora(options) {
3065
+ return new Ora(options);
3066
+ }
3067
+
3068
+ // package.json
3069
+ var package_default = {
3070
+ name: "@keload/node-red-dxp",
3071
+ version: "1.4.1",
3072
+ description: "",
3073
+ type: "module",
3074
+ scripts: {
3075
+ build: "tsup",
3076
+ watch: "tsup --watch",
3077
+ format: "pnpm biome format",
3078
+ lint: "pnpm biome lint",
3079
+ "lint:check": "pnpm biome check",
3080
+ release: "pnpm release-it",
3081
+ "release:test": "pnpm release-it --dry-run",
3082
+ "docs:dev": "vitepress dev docs",
3083
+ "docs:build": "vitepress build docs",
3084
+ "docs:preview": "vitepress preview docs",
3085
+ "test:unit": "vitest"
3086
+ },
3087
+ publishConfig: {
3088
+ access: "public"
3089
+ },
3090
+ bin: {
3091
+ "node-red-dxp": "./dist/cli/index.cjs"
3092
+ },
3093
+ exports: {
3094
+ ".": {
3095
+ import: "./dist/index.js",
3096
+ require: "./dist/index.cjs"
3097
+ },
3098
+ "./editor": {
3099
+ import: "./dist/editor/index.js",
3100
+ require: "./dist/editor/index.cjs"
3101
+ },
3102
+ "./package.json": "./package.json"
3103
+ },
3104
+ keywords: [],
3105
+ author: "Cl\xE9ment BERARD <contact@berard.dev>",
3106
+ license: "MIT",
3107
+ repository: {
3108
+ type: "git",
3109
+ url: "https://github.com/clement-berard/node-red-dxp.git"
3110
+ },
3111
+ bugs: {
3112
+ url: "https://github.com/clement-berard/node-red-dxp/issues"
3113
+ },
3114
+ homepage: "https://github.com/clement-berard/node-red-dxp",
3115
+ devDependencies: {
3116
+ "@biomejs/biome": "1.9.4",
3117
+ "@release-it/conventional-changelog": "9.0.3",
3118
+ "@types/handlebars": "4.1.0",
3119
+ "release-it": "17.10.0",
3120
+ tsup: "8.3.5",
3121
+ tsx: "4.19.2",
3122
+ typescript: "5.6.3",
3123
+ vitepress: "1.5.0",
3124
+ vitest: "2.1.5"
3125
+ },
3126
+ dependencies: {
3127
+ "@fullhuman/postcss-purgecss": "^6.0.0",
3128
+ "@types/html-minifier-terser": "7.0.2",
3129
+ "@types/jquery": "3.5.32",
3130
+ "@types/jqueryui": "1.12.23",
3131
+ "@types/node-red": "1.3.5",
3132
+ "@types/prettyjson": "0.0.33",
3133
+ autoprefixer: "^10.4.20",
3134
+ "browser-sync": "3.0.3",
3135
+ chokidar: "4.0.1",
3136
+ commander: "12.1.0",
3137
+ consola: "3.2.3",
3138
+ cosmiconfig: "9.0.0",
3139
+ cssnano: "^7.0.6",
3140
+ esbuild: "0.24.0",
3141
+ glob: "11.0.0",
3142
+ handlebars: "4.7.8",
3143
+ "html-minifier-terser": "7.2.0",
3144
+ "merge-anything": "6.0.2",
3145
+ nodemon: "3.1.7",
3146
+ ora: "8.1.1",
3147
+ postcss: "^8.4.49",
3148
+ prettyjson: "1.2.5",
3149
+ radash: "12.1.0",
3150
+ sass: "1.81.0",
3151
+ "solid-js": "1.9.3",
3152
+ tailwindcss: "^3.4.15"
3153
+ },
3154
+ files: [
3155
+ "dist"
3156
+ ]
3157
+ };
3158
+
3159
+ // node_modules/.pnpm/is-what@5.0.2/node_modules/is-what/dist/getType.js
3160
+ function getType(payload) {
3161
+ return Object.prototype.toString.call(payload).slice(8, -1);
3162
+ }
3163
+
3164
+ // node_modules/.pnpm/is-what@5.0.2/node_modules/is-what/dist/isPlainObject.js
3165
+ function isPlainObject(payload) {
3166
+ if (getType(payload) !== "Object")
3167
+ return false;
3168
+ const prototype = Object.getPrototypeOf(payload);
3169
+ return !!prototype && prototype.constructor === Object && prototype === Object.prototype;
3170
+ }
3171
+
3172
+ // node_modules/.pnpm/is-what@5.0.2/node_modules/is-what/dist/isSymbol.js
3173
+ function isSymbol(payload) {
3174
+ return getType(payload) === "Symbol";
3175
+ }
3176
+
3177
+ // node_modules/.pnpm/merge-anything@6.0.2/node_modules/merge-anything/dist/merge.js
3178
+ function assignProp(carry, key, newVal, originalObject) {
3179
+ const propType = {}.propertyIsEnumerable.call(originalObject, key) ? "enumerable" : "nonenumerable";
3180
+ if (propType === "enumerable")
3181
+ carry[key] = newVal;
3182
+ if (propType === "nonenumerable") {
3183
+ Object.defineProperty(carry, key, {
3184
+ value: newVal,
3185
+ enumerable: false,
3186
+ writable: true,
3187
+ configurable: true
3188
+ });
3189
+ }
3190
+ }
3191
+ function mergeRecursively(origin, newComer, compareFn) {
3192
+ if (!isPlainObject(newComer))
3193
+ return newComer;
3194
+ let newObject = {};
3195
+ if (isPlainObject(origin)) {
3196
+ const props2 = Object.getOwnPropertyNames(origin);
3197
+ const symbols2 = Object.getOwnPropertySymbols(origin);
3198
+ newObject = [...props2, ...symbols2].reduce((carry, key) => {
3199
+ const targetVal = origin[key];
3200
+ if (!isSymbol(key) && !Object.getOwnPropertyNames(newComer).includes(key) || isSymbol(key) && !Object.getOwnPropertySymbols(newComer).includes(key)) {
3201
+ assignProp(carry, key, targetVal, origin);
3202
+ }
3203
+ return carry;
3204
+ }, {});
3205
+ }
3206
+ const props = Object.getOwnPropertyNames(newComer);
3207
+ const symbols = Object.getOwnPropertySymbols(newComer);
3208
+ const result = [...props, ...symbols].reduce((carry, key) => {
3209
+ let newVal = newComer[key];
3210
+ const targetVal = isPlainObject(origin) ? origin[key] : void 0;
3211
+ if (targetVal !== void 0 && isPlainObject(newVal)) {
3212
+ newVal = mergeRecursively(targetVal, newVal);
3213
+ }
3214
+ const propToAssign = newVal;
3215
+ assignProp(carry, key, propToAssign, newComer);
3216
+ return carry;
3217
+ }, newObject);
3218
+ return result;
3219
+ }
3220
+ function merge(object, ...otherObjects) {
3221
+ return otherObjects.reduce((result, newComer) => {
3222
+ return mergeRecursively(result, newComer);
3223
+ }, object);
3224
+ }
3225
+
3226
+ // src/default-config.ts
3227
+ var defaultConfig = {
3228
+ libCacheDir: ".node-red-dx",
3229
+ srcDir: "src",
3230
+ nodesDirName: "nodes",
3231
+ nodes: {
3232
+ controllerName: "controller",
3233
+ localesDirName: "locales",
3234
+ editor: {
3235
+ dirName: "editor",
3236
+ htmlName: "index",
3237
+ tsName: "index"
3238
+ }
3239
+ },
3240
+ builder: {
3241
+ outputDir: "dist"
3242
+ },
3243
+ watcher: {
3244
+ nodeRed: {
3245
+ enabled: true,
3246
+ path: "~/.node-red",
3247
+ url: "http://localhost:1880"
3248
+ }
3249
+ }
3250
+ };
3251
+
3252
+ // src/current-context.ts
3253
+ var CONFIG_FILE_NAME = "node-red-dx";
3254
+ var cleanPkgName = (pkgName) => pkgName.replace("@", "").replace("/", "-");
3255
+ function getConfig() {
3256
+ const explorerSync = cosmiconfig.cosmiconfigSync(CONFIG_FILE_NAME);
3257
+ try {
3258
+ const result = explorerSync.search();
3259
+ return merge(defaultConfig, result ? result.config : {});
3260
+ } catch (error) {
3261
+ console.error("Error while loading configuration", error);
3262
+ throw error;
3263
+ }
3264
+ }
3265
+ var currentConfig = getConfig();
3266
+ var currentDir = process.cwd();
3267
+ var jsonPackage = JSON.parse(fs.readFileSync(`${currentDir}/package.json`, "utf-8"));
3268
+ var pathSrcDir = `${currentDir}/${currentConfig.srcDir}`;
3269
+ var additionalResourcesDir = `${currentDir}/resources`;
3270
+ var pathSrcNodesDir = `${pathSrcDir}/${currentConfig.nodesDirName}`;
3271
+ var pathLibCacheDir = `${currentDir}/${currentConfig.libCacheDir}`;
3272
+ var currentPackagedDistPath = `${path2__default.default.resolve(__dirname, "..")}`;
3273
+ var packageNameSlug = cleanPkgName(jsonPackage.name);
3274
+ function listNodeFolders() {
3275
+ const rawNodes = glob.globSync(`${pathSrcNodesDir}/*`, { withFileTypes: true });
3276
+ return rawNodes.map((entry) => {
3277
+ const fullPath = entry.fullpath();
3278
+ const fullEditorPath = `${fullPath}/${currentConfig.nodes.editor.dirName}`;
3279
+ const relativePath = fullPath.replace(currentDir, "").slice(1);
3280
+ const relativeEditorPath = `${relativePath}/${currentConfig.nodes.editor.dirName}`;
3281
+ const scssFiles = glob.globSync(`${fullEditorPath}/**/*.scss`);
3282
+ const mdxFiles = glob.globSync(`${fullPath}/doc.mdx`);
3283
+ const mdFiles = glob.globSync(`${fullPath}/doc.md`);
3284
+ const dashName = radash.dash(entry.name);
3285
+ return {
3286
+ fullEditorPath,
3287
+ fullPath,
3288
+ name: entry.name,
3289
+ pascalName: radash.pascal(entry.name),
3290
+ dashName,
3291
+ relativeEditorPath,
3292
+ relativePath,
3293
+ resolvedLocalesPaths: glob.globSync(`${fullPath}/${currentConfig.nodes.localesDirName}/*.json`),
3294
+ nodeIdentifier: `${packageNameSlug}-${dashName}`,
3295
+ fullControllerPath: `${fullPath}/${currentConfig.nodes.controllerName}.ts`,
3296
+ editor: {
3297
+ tsPath: `${fullEditorPath}/${currentConfig.nodes.editor.tsName}.ts`,
3298
+ htmlPath: `${fullEditorPath}/${currentConfig.nodes.editor.htmlName}.html`,
3299
+ scssFiles
3300
+ },
3301
+ doc: {
3302
+ mdxFiles,
3303
+ mdFiles
3304
+ }
3305
+ };
3306
+ });
3307
+ }
3308
+ function getCurrentContext() {
3309
+ const listNodesFull = listNodeFolders();
3310
+ const listNodesFullNames = listNodesFull.map((node) => node.name);
3311
+ return {
3312
+ currentDir,
3313
+ pathSrcDir,
3314
+ pathSrcNodesDir,
3315
+ additionalResourcesDir,
3316
+ pathDist: `${currentDir}/${currentConfig.builder.outputDir}`,
3317
+ currentPackagedDistPath,
3318
+ cacheDirFiles: {
3319
+ controllerIndex: `${pathLibCacheDir}/controller-index.ts`,
3320
+ editorIndex: `${pathLibCacheDir}/editor-index.ts`
3321
+ },
3322
+ pathLibCacheDir,
3323
+ packageName: jsonPackage.name,
3324
+ packageNameSlug,
3325
+ config: currentConfig,
3326
+ resolvedSrcPathsScss: glob.globSync(`${pathSrcDir}/**/*.scss`, { ignore: `${pathSrcNodesDir}/**/*.scss` }),
3327
+ resolvedNodesPaths: glob.globSync(`${pathSrcNodesDir}/*`),
3328
+ resolvedSrcLocalesPaths: glob.globSync(`${pathSrcDir}/locales/*.json`),
3329
+ listNodesFull,
3330
+ listNodesFullNames
3331
+ };
3332
+ }
3333
+ var currentContext = getCurrentContext();
3334
+ var distributionPackagePath = `${path2__default.default.resolve(__dirname, "..")}`;
3335
+ function createFolderIfNotExists(folderPath) {
3336
+ if (!fs__default.default.existsSync(folderPath)) {
3337
+ fs__default.default.mkdirSync(folderPath, { recursive: true });
3338
+ }
3339
+ }
3340
+ async function writeFile(path4, content) {
3341
+ try {
3342
+ await fsPromise__default.default.writeFile(path4, content);
3343
+ } catch (error) {
3344
+ console.error("Error writing controller index:", error);
3345
+ }
3346
+ }
3347
+ async function cleanPaths(paths) {
3348
+ for (const dirPath of paths) {
3349
+ try {
3350
+ const resolvedPath = path2__default.default.resolve(dirPath);
3351
+ const stats = await fsPromise__default.default.stat(resolvedPath).catch(() => null);
3352
+ if (stats == null ? void 0 : stats.isDirectory()) {
3353
+ await fsPromise__default.default.rm(resolvedPath, { recursive: true, force: true });
3354
+ }
3355
+ } catch (error) {
3356
+ console.error(`Error cleaning path (${dirPath}): ${error}`);
3357
+ }
3358
+ }
3359
+ }
3360
+ var BuilderController = class {
3361
+ params;
3362
+ constructor(params) {
3363
+ this.params = { minify: false, ...params };
3364
+ }
3365
+ async getControllerIndexContent() {
3366
+ return `
3
3367
  import type { NodeAPI } from 'node-red';
4
- ${s.listNodesFull.map(e=>`import ${e.pascalName} from '${e.fullControllerPath}';`).join(`
5
- `)}
3368
+ ${currentContext.listNodesFull.map((node) => `import ${node.pascalName} from '${node.fullControllerPath}';`).join("\n")}
6
3369
 
7
3370
 
8
3371
  export default async (RED: NodeAPI): Promise<void> => {
9
3372
  global.RED = RED;
10
3373
 
11
- ${s.listNodesFull.map(e=>`// @ts-ignore
12
- global.RED.nodes.registerType('${e.name}', ${e.pascalName});`).join(`
13
- `)}
3374
+ ${currentContext.listNodesFull.map((node) => `// @ts-ignore
3375
+ global.RED.nodes.registerType('${node.name}', ${node.pascalName});`).join("\n")}
3376
+ };
3377
+ `.trim();
3378
+ }
3379
+ buildScript() {
3380
+ return esbuild__default.default.build({
3381
+ entryPoints: [currentContext.cacheDirFiles.controllerIndex],
3382
+ outfile: `${currentContext.pathDist}/index.js`,
3383
+ bundle: true,
3384
+ minify: this.params.minify,
3385
+ minifyWhitespace: this.params.minify,
3386
+ minifyIdentifiers: this.params.minify,
3387
+ minifySyntax: this.params.minify,
3388
+ platform: "node",
3389
+ format: "cjs",
3390
+ target: "es2018",
3391
+ loader: { ".ts": "ts" },
3392
+ packages: "external"
3393
+ });
3394
+ }
3395
+ async getControllerTask() {
3396
+ return this.getControllerIndexContent().then((content) => {
3397
+ writeFile(`${currentContext.cacheDirFiles.controllerIndex}`, content).then(() => {
3398
+ this.buildScript();
3399
+ });
3400
+ });
3401
+ }
14
3402
  };
15
- `.trim()}buildScript(){return we__default.default.build({entryPoints:[s.cacheDirFiles.controllerIndex],outfile:`${s.pathDist}/index.js`,bundle:!0,minify:this.params.minify,minifyWhitespace:this.params.minify,minifyIdentifiers:this.params.minify,minifySyntax:this.params.minify,platform:"node",format:"cjs",target:"es2018",loader:{".ts":"ts"},packages:"external"})}async getControllerTask(){return this.getControllerIndexContent().then(e=>{f(`${s.cacheDirFiles.controllerIndex}`,e).then(()=>{this.buildScript();});})}};var D=class{getAllDocContent(){let e=[];for(let r of s.listNodesFull)if(r.doc.mdFiles[0]){let n=M__default.default.readFileSync(r.doc.mdFiles[0],"utf-8"),i=`
16
- <script type="text/markdown" data-help-name="${r.name}">
17
- ${n}
3403
+ var BuildDoc = class {
3404
+ // TODO need to refactor
3405
+ getAllDocContent() {
3406
+ const result = [];
3407
+ for (const node of currentContext.listNodesFull) {
3408
+ const fileMd = node.doc.mdFiles[0];
3409
+ if (fileMd) {
3410
+ const htmlMd = fs__default.default.readFileSync(node.doc.mdFiles[0], "utf-8");
3411
+ const inner = `
3412
+ <script type="text/markdown" data-help-name="${node.name}">
3413
+ ${htmlMd}
18
3414
  </script>
19
- `;e.push(i);}return e.length?e.join(`
20
- `):""}};function _(t){return t.trim().replace(/\n\s+/g,"")}function V(t=""){return {name:t,dashName:radash.dash(t),pascalName:radash.pascal(t)}}async function Fe(t){return htmlMinifierTerser.minify(t,{collapseWhitespace:!0,removeComments:!0,removeRedundantAttributes:!1,useShortDoctype:!0,removeEmptyAttributes:!1,minifyCSS:!1,minifyJS:!1})}function je(t,e){return `
21
- <script type="text/html" data-template-name="${t}">
22
- ${e}
3415
+ `;
3416
+ result.push(inner);
3417
+ }
3418
+ }
3419
+ return result.length ? result.join("\n") : "";
3420
+ }
3421
+ };
3422
+ function cleanSpaces(str) {
3423
+ return str.trim().replace(/\n\s+/g, "");
3424
+ }
3425
+ function computeNodeName(inName = "") {
3426
+ return {
3427
+ name: inName,
3428
+ dashName: radash.dash(inName),
3429
+ pascalName: radash.pascal(inName)
3430
+ };
3431
+ }
3432
+
3433
+ // src/builder/editor/i18n.ts
3434
+ function updateI18nAttributes(nodeName = "", htmlContent = "") {
3435
+ if (!nodeName || !htmlContent) {
3436
+ return htmlContent;
3437
+ }
3438
+ return htmlContent.replace(/data-i18n="([^"]+)"/g, (match, i18nValue) => {
3439
+ const updatedValue = i18nValue.replace(/(\[.*?\])?(node-red:[^;]+|[^;]+)/g, (_, prefix, key) => {
3440
+ let res = key;
3441
+ if (!key.startsWith("node-red:")) {
3442
+ res = `${nodeName}.${key}`;
3443
+ }
3444
+ return (prefix || "") + res;
3445
+ });
3446
+ return `data-i18n="${updatedValue}"`;
3447
+ });
3448
+ }
3449
+
3450
+ // src/builder/editor/html.ts
3451
+ async function minifyHtml(content) {
3452
+ return htmlMinifierTerser.minify(content, {
3453
+ collapseWhitespace: true,
3454
+ removeComments: true,
3455
+ removeRedundantAttributes: false,
3456
+ useShortDoctype: true,
3457
+ removeEmptyAttributes: false,
3458
+ minifyCSS: false,
3459
+ minifyJS: false
3460
+ });
3461
+ }
3462
+ function wrapHtml(nodeName, html) {
3463
+ return `
3464
+ <script type="text/html" data-template-name="${nodeName}">
3465
+ ${html}
23
3466
  </script>
24
- `}async function ve(t,e,r=!1){let o=M.readFileSync(t.editor.htmlPath,"utf8"),n=`
25
- <div class="${e}">
26
- <div class="${t.nodeIdentifier}">${o}</div>
3467
+ `;
3468
+ }
3469
+ async function processNodeHtml(node, packageNameSlug2, minify2 = false) {
3470
+ const htmlContent = fs.readFileSync(node.editor.htmlPath, "utf8");
3471
+ const htmlContentWithAdditionalDiv = `
3472
+ <div class="${packageNameSlug2}">
3473
+ <div class="${node.nodeIdentifier}">${htmlContent}</div>
27
3474
  </div>
28
- `,i=r?await Fe(n):n,p=je(t.name,i);return {nodeName:t.name,nodeIdentifier:t.nodeIdentifier,html:i,wrappedHtml:p}}async function K(t){let{nodes:e,minify:r=!1}=t,o=await Promise.all(e.map(i=>ve(i,t.packageNameSlug,r)));return {html:o.map(i=>i.html).join("").trim(),allWrappedHtml:o.map(i=>r?_(i.wrappedHtml):i.wrappedHtml).join("").trim()}}async function Be(t,e){return (await U__default.default([Ie__default.default({content:[{raw:e,extension:"html"}]}),Oe__default.default,ke__default.default({preset:"default"})]).process(t,{from:void 0})).css}function Re(t){return z__namespace.compile(t,{style:"expanded"}).css}function Q(t){let e={};for(let r=0;r<t.length;r++){let o=t[r];e[o]=Re(o);}return e}function Te(t){return t.some(r=>r.editor.scssFiles.length)?t.filter(r=>r.editor.scssFiles.length).map(r=>{let o=Q(r.editor.scssFiles),n=Object.values(o).join("");return {name:r.name,mergedCompiledStyles:n,scssFinal:`
29
- #${r.nodeIdentifier}{
30
- ${n}
31
- }`}}):[]}async function Le(t,e={}){let o={...{content:[{raw:t}],theme:{}},...e},n=glob.globSync(`${G}/${s.config.nodes.editor.dirName}/assets/tailwind.scss`)[0],i=n.length?M__default.default.readFileSync(n,"utf8"):"";return (await U__default.default([He__default.default(o),ae("autoprefixer")]).process(i,{from:void 0})).css}function We(){let t=s.resolvedSrcPathsScss,e=Q([...t]);return Object.values(e).join("")}async function X(t){let{rawHtml:e,minify:r=!1,nodes:o}=t||{},n=We(),i=Te(o),p=await Le(e),m=l=>`.${s.packageNameSlug}{${l}}`,c=i.map(l=>l.scssFinal).join(`
32
- `),a=m(`${p}${n}${c}`);return r?Be(a,e):a}var F=class{params;constructor(e){this.params={minify:!1,...e};}async getEditorIndexContent(){return `
3475
+ `;
3476
+ let html = minify2 ? await minifyHtml(htmlContentWithAdditionalDiv) : htmlContentWithAdditionalDiv;
3477
+ html = updateI18nAttributes(node.name, html);
3478
+ const wrappedHtml = wrapHtml(node.name, html);
3479
+ return {
3480
+ nodeName: node.name,
3481
+ nodeIdentifier: node.nodeIdentifier,
3482
+ html,
3483
+ wrappedHtml
3484
+ };
3485
+ }
3486
+ async function getNodesHtml(params) {
3487
+ const { nodes, minify: minify2 = false } = params;
3488
+ const res = await Promise.all(nodes.map((node) => processNodeHtml(node, params.packageNameSlug, minify2)));
3489
+ const allHtml = res.map((node) => node.html).join("").trim();
3490
+ return {
3491
+ html: allHtml,
3492
+ allWrappedHtml: res.map((node) => minify2 ? cleanSpaces(node.wrappedHtml) : node.wrappedHtml).join("").trim()
3493
+ };
3494
+ }
3495
+ async function processCSS(cssString, htmlString) {
3496
+ const result = await postcss__default.default([
3497
+ purgeCss__default.default({
3498
+ content: [{ raw: htmlString, extension: "html" }]
3499
+ // Analyse directe du HTML
3500
+ }),
3501
+ autoprefixer__default.default,
3502
+ cssnano__default.default({ preset: "default" })
3503
+ ]).process(cssString, { from: void 0 });
3504
+ return result.css;
3505
+ }
3506
+ function compileScss(filePath) {
3507
+ const result = sass__namespace.compile(filePath, { style: "expanded" });
3508
+ return result.css;
3509
+ }
3510
+ function buildStyles(files) {
3511
+ const styles3 = {};
3512
+ for (let i = 0; i < files.length; i++) {
3513
+ const filePath = files[i];
3514
+ styles3[filePath] = compileScss(filePath);
3515
+ }
3516
+ return styles3;
3517
+ }
3518
+ function getNodesStyles(nodes) {
3519
+ const hasStyles = nodes.some((node) => node.editor.scssFiles.length);
3520
+ if (!hasStyles) {
3521
+ return [];
3522
+ }
3523
+ return nodes.filter((node) => node.editor.scssFiles.length).map((node) => {
3524
+ const nodeStyles = buildStyles(node.editor.scssFiles);
3525
+ const mergedCompiledStyles = Object.values(nodeStyles).join("");
3526
+ return {
3527
+ name: node.name,
3528
+ mergedCompiledStyles,
3529
+ scssFinal: `
3530
+ #${node.nodeIdentifier}{
3531
+ ${mergedCompiledStyles}
3532
+ }`
3533
+ };
3534
+ });
3535
+ }
3536
+ async function generateCSSFromHTMLWithTailwind(htmlString, tailwindConfig = {}) {
3537
+ const defaultConfig2 = {
3538
+ content: [{ raw: htmlString }],
3539
+ theme: {}
3540
+ };
3541
+ const finalConfig = { ...defaultConfig2, ...tailwindConfig };
3542
+ const tailwindScssFilePath = glob.globSync(
3543
+ `${distributionPackagePath}/${currentContext.config.nodes.editor.dirName}/assets/tailwind.scss`
3544
+ )[0];
3545
+ const scssString = tailwindScssFilePath.length ? fs__default.default.readFileSync(tailwindScssFilePath, "utf8") : "";
3546
+ const result = await postcss__default.default([tailwindcss__default.default(finalConfig), __require("autoprefixer")]).process(scssString, {
3547
+ from: void 0
3548
+ });
3549
+ return result.css;
3550
+ }
3551
+ function getSrcStyles() {
3552
+ const srcStyles = currentContext.resolvedSrcPathsScss;
3553
+ const srcStylesCompiled = buildStyles([...srcStyles]);
3554
+ return Object.values(srcStylesCompiled).join("");
3555
+ }
3556
+ async function getAllCompiledStyles(params) {
3557
+ const { rawHtml, minify: minify2 = false, nodes } = params || {};
3558
+ const srcStyles = getSrcStyles();
3559
+ const nodesStyles = getNodesStyles(nodes);
3560
+ const twCss = await generateCSSFromHTMLWithTailwind(rawHtml);
3561
+ const getSrcWrapper = (content) => `.${currentContext.packageNameSlug}{${content}}`;
3562
+ const allNodesStyles = nodesStyles.map((node) => node.scssFinal).join("\n");
3563
+ const result = getSrcWrapper(`${twCss}${srcStyles}${allNodesStyles}`);
3564
+ return minify2 ? processCSS(result, rawHtml) : result;
3565
+ }
3566
+
3567
+ // src/builder/editor/BuilderEditor.class.ts
3568
+ var BuilderEditor = class {
3569
+ params;
3570
+ constructor(params) {
3571
+ this.params = { minify: false, ...params };
3572
+ }
3573
+ async getEditorIndexContent() {
3574
+ return `
33
3575
  import type { NodeAPI } from 'node-red';
34
- ${s.listNodesFull.map(e=>`import ${e.pascalName} from '${e.editor.tsPath}';`).join(`
35
- `)}
3576
+ ${currentContext.listNodesFull.map((node) => `import ${node.pascalName} from '${node.editor.tsPath}';`).join("\n")}
36
3577
 
37
3578
  declare const RED: NodeAPI;
38
3579
 
39
- ${s.listNodesFull.map(e=>`// @ts-ignore
40
- window.RED.nodes.registerType('${e.name}', ${e.pascalName});`).join(`
41
- `)}
42
- `.trim()}async getBuiltScript(){let e=await we__default.default.build({entryPoints:[s.cacheDirFiles.editorIndex],bundle:!0,platform:"browser",format:"iife",target:"es6",sourcemap:!1,minify:this.params.minify,minifyWhitespace:this.params.minify,minifySyntax:this.params.minify,minifyIdentifiers:this.params.minify,legalComments:"none",inject:[`${s.currentPackagedDistPath}/editor/global-solid.ts`],write:!1,loader:{".ts":"ts"}});return e.outputFiles&&e.outputFiles.length>0?e.outputFiles[0].text:""}async prepareEditorIndex(){let e=await this.getBuiltScript(),r=await K({minify:this.params.minify,nodes:s.listNodesFull,packageNameSlug:s.packageNameSlug}),o=await X({rawHtml:r.html,minify:this.params.minify,nodes:s.listNodesFull}),i=new D().getAllDocContent(),p=`<script type="application/javascript">${e.trim()}</script>`,m=`<style>${o}</style>`;return `
43
- ${r.allWrappedHtml}
44
- ${m}
45
- ${p}
46
- ${i}`.trim()}async getEditorTask(){return this.getEditorIndexContent().then(e=>{f(`${s.cacheDirFiles.editorIndex}`,e).then(()=>{this.prepareEditorIndex().then(async r=>{await f(`${s.pathDist}/${s.config.nodes.editor.htmlName}.html`,r);});});})}};var x=class{params;builderController;builderEditor;constructor(e){this.params={minify:!1,...e},this.builderController=new S({minify:this.params.minify}),this.builderEditor=new F({minify:this.params.minify});}prepare(){C(s.pathLibCacheDir);let e=[J([s.pathDist]),f(`${s.pathLibCacheDir}/config.json`,JSON.stringify(s.config,null,2))];return Promise.all(e)}async buildAll(){return await this.prepare(),Promise.all([this.builderController.getControllerTask(),this.builderEditor.getEditorTask()])}};function Y(t){let e=new commander.Command("checks").description("[WIP] Commands to check the some stuff");e.command("nodes-structure").description("[WIP] Verify the structure of the nodes").action(()=>{console.log("In construction");}),t.addCommand(e);}function Z(t){let e=new commander.Command("info").description("Command to get information").description("Get information about the package").action(()=>{consola.consola.log(_e__default.default.render(s));});t.addCommand(e);}async function Qe(t){try{let e=q__default.default.resolve(t);return await O__default.default.readFile(e,"utf-8")}catch(e){throw new Error(`Failed to load file: ${e.message}`)}}async function Xe(t,e){try{let r=await Qe(t);return ze__default.default.compile(r)(e)}catch(r){throw new Error(`Failed to render template: ${r.message}`)}}var j=class{nodePascalName;nodeDashName;newNodeDistPath;newNodeEditorDistPath;scaffoldedDistHbs;constructor(e){let{pascalName:r,dashName:o}=V(e);this.nodePascalName=r,this.nodeDashName=o,this.newNodeDistPath=`${s.pathSrcNodesDir}/${o}`,this.newNodeEditorDistPath=`${this.newNodeDistPath}/${s.config.nodes.editor.dirName}`,this.scaffoldedDistHbs=`${s.currentPackagedDistPath}/scaffolding/create-node/hbs`;}distFolderExist(){return M__default.default.existsSync(this.newNodeDistPath)}prepareStructure(){return [{finalPath:`${this.newNodeDistPath}/index.ts`,templatePath:`${this.scaffoldedDistHbs}/controller.ts.hbs`,templateData:{nodePascalName:this.nodePascalName,nodeName:this.nodeDashName}},{finalPath:`${this.newNodeDistPath}/types.ts`,templatePath:`${this.scaffoldedDistHbs}/types.ts.hbs`,templateData:{nodePascalName:this.nodePascalName,nodeName:this.nodeDashName}},{finalPath:`${this.newNodeDistPath}/doc.md`,templatePath:`${this.scaffoldedDistHbs}/doc.md.hbs`,templateData:{}},{finalPath:`${this.newNodeEditorDistPath}/index.ts`,templatePath:`${this.scaffoldedDistHbs}/editor/index.ts.hbs`,templateData:{nodePascalName:this.nodePascalName,nodeName:this.nodeDashName}},{finalPath:`${this.newNodeEditorDistPath}/styles.scss`,templatePath:`${this.scaffoldedDistHbs}/editor/styles.scss.hbs`,templateData:{nodeName:this.nodeDashName}},{finalPath:`${this.newNodeEditorDistPath}/index.html`,templatePath:`${this.scaffoldedDistHbs}/editor/index.html.hbs`,templateData:{}}]}async renderFilesTemplates(){let e=this.prepareStructure().map(async r=>Xe(r.templatePath,r.templateData).then(o=>({finalPath:r.finalPath,content:o})));return await Promise.all(e)}async writeNewNode(){let e=await this.renderFilesTemplates();await Promise.all(e.map(r=>f(r.finalPath,r.content)));}};function ee(t){let e=new commander.Command("create-node").description("Create new node").action(async()=>{let r=await consola.consola.prompt("Enter node name:",{type:"text"}),o=radash.dash(r);if(!await consola.consola.prompt(`This name is OK for you '${o}'?`,{type:"confirm"})){consola.consola.info("\u{1F44C} OK. Exiting...");return}let i=new j(o);if(i.distFolderExist()){consola.consola.error(`Node ${i.nodeDashName} already exists`),consola.consola.info(`In ${i.newNodeDistPath}`);return}C(i.newNodeEditorDistPath),await i.writeNewNode();});t.addCommand(e);}var re,k;function rt(){re=te__default.default({exec:`node-red -u ${s.config.watcher.nodeRed.path}`,ignore:["**/*"],ext:"js,html",verbose:!0}),te__default.default.once("start",()=>{k=et__default.default.create(),k.init({ui:!1,proxy:{target:s.config.watcher.nodeRed.url,ws:!0},ghostMode:!1,open:!1,reloadDelay:4e3});}).on("quit",()=>{consola.consola.info("Nodemon has quit"),process.exit(0);});}function ot(){re.restart(),k.reload();}function oe(){let t=s.config.watcher.nodeRed.enabled&&s.config.watcher.nodeRed.path,e=tt__default.default.watch(s.pathSrcDir,{}),r=new x({minify:!1});e.on("ready",async()=>{consola.consola.info("Initial scan complete. Ready for changes"),await r.buildAll(),consola.consola.success("Initial Build completed"),t?rt():consola.consola.warn("Node-Red watcher is disabled. Please enable it in the config file");}).on("change",async o=>{consola.consola.info(`File ${o.replace(s.currentDir,"")} has been changed`),await r.buildAll(),consola.consola.success("Build completed"),t&&ot();});}var h=new commander.Command;h.name("node-red-dxp").description("node-red-dxp CLI").version(A.version);h.command("build").description("Build project").action(async t=>{let e=perf_hooks.performance.now();consola.consola.start("Building..."),await new x({minify:!0}).buildAll();let n=perf_hooks.performance.now()-e,i=n>1e3?`${(n/1e3).toFixed(2)}s`:`${n.toFixed(2)}ms`;consola.consola.ready(`Build completed in ${i}`);});h.command("watch").description("watch project").option("--minify <minify>","[WIP] Minify the output",!1).action(t=>{oe();});Y(h);Z(h);ee(h);h.parse(ne__namespace.argv);
3580
+ ${currentContext.listNodesFull.map((node) => `// @ts-ignore
3581
+ window.RED.nodes.registerType('${node.name}', ${node.pascalName});`).join("\n")}
3582
+ `.trim();
3583
+ }
3584
+ async getBuiltScript() {
3585
+ const result = await esbuild__default.default.build({
3586
+ entryPoints: [currentContext.cacheDirFiles.editorIndex],
3587
+ bundle: true,
3588
+ platform: "browser",
3589
+ format: "iife",
3590
+ target: "es6",
3591
+ sourcemap: false,
3592
+ minify: this.params.minify,
3593
+ minifyWhitespace: this.params.minify,
3594
+ minifySyntax: this.params.minify,
3595
+ minifyIdentifiers: this.params.minify,
3596
+ legalComments: "none",
3597
+ inject: [`${currentContext.currentPackagedDistPath}/editor/global-solid.ts`],
3598
+ write: false,
3599
+ loader: { ".ts": "ts" }
3600
+ });
3601
+ if (result.outputFiles && result.outputFiles.length > 0) {
3602
+ return result.outputFiles[0].text;
3603
+ }
3604
+ return "";
3605
+ }
3606
+ async prepareEditorIndex() {
3607
+ const js = await this.getBuiltScript();
3608
+ const html = await getNodesHtml({
3609
+ minify: this.params.minify,
3610
+ nodes: currentContext.listNodesFull,
3611
+ packageNameSlug: currentContext.packageNameSlug
3612
+ });
3613
+ const css = await getAllCompiledStyles({
3614
+ rawHtml: html.html,
3615
+ minify: this.params.minify,
3616
+ nodes: currentContext.listNodesFull
3617
+ });
3618
+ const builderDoc = new BuildDoc();
3619
+ const docs = builderDoc.getAllDocContent();
3620
+ const wrappedJs = `<script type="application/javascript">${js.trim()}</script>`;
3621
+ const wrappedCss = `<style>${css}</style>`;
3622
+ return `
3623
+ ${html.allWrappedHtml}
3624
+ ${wrappedCss}
3625
+ ${wrappedJs}
3626
+ ${docs}`.trim();
3627
+ }
3628
+ async getEditorTask() {
3629
+ return this.getEditorIndexContent().then((content) => {
3630
+ writeFile(`${currentContext.cacheDirFiles.editorIndex}`, content).then(() => {
3631
+ this.prepareEditorIndex().then(async (contentFinalIndexHtml) => {
3632
+ await writeFile(
3633
+ `${currentContext.pathDist}/${currentContext.config.nodes.editor.htmlName}.html`,
3634
+ contentFinalIndexHtml
3635
+ );
3636
+ });
3637
+ });
3638
+ });
3639
+ }
3640
+ };
3641
+ function resolveLangCode(path4) {
3642
+ var _a;
3643
+ return (_a = path4.split("/").pop()) == null ? void 0 : _a.split(".").shift();
3644
+ }
3645
+ async function readJsonFile(path4) {
3646
+ return fsPromise__default.default.readFile(path4, "utf8");
3647
+ }
3648
+ var LocalesBuilder = class {
3649
+ async parseJsonFile(path4) {
3650
+ const fileContent = await readJsonFile(path4);
3651
+ return { fileContent, fileContentParsed: JSON.parse(fileContent) };
3652
+ }
3653
+ async resolveGlobalLocalesPath(path4) {
3654
+ const { fileContent, fileContentParsed } = await this.parseJsonFile(path4);
3655
+ return {
3656
+ folderName: resolveLangCode(path4),
3657
+ fileContent,
3658
+ fileContentParsed,
3659
+ filePath: path4,
3660
+ isGlobal: true,
3661
+ nodeName: null
3662
+ };
3663
+ }
3664
+ async loadNodesLocales(listNodesFull) {
3665
+ const allTasks = listNodesFull.flatMap(
3666
+ (node) => node.resolvedLocalesPaths.map(async (path4) => {
3667
+ const { fileContent, fileContentParsed } = await this.parseJsonFile(path4);
3668
+ return {
3669
+ folderName: resolveLangCode(path4),
3670
+ filePath: path4,
3671
+ fileContent,
3672
+ fileContentParsed,
3673
+ nodeName: node.name,
3674
+ isGlobal: false
3675
+ };
3676
+ })
3677
+ );
3678
+ return Promise.all(allTasks);
3679
+ }
3680
+ async getAll() {
3681
+ const [srcLocales, nodesLocales] = await Promise.all([
3682
+ Promise.all(currentContext.resolvedSrcLocalesPaths.map((path4) => this.resolveGlobalLocalesPath(path4))),
3683
+ this.loadNodesLocales(currentContext.listNodesFull)
3684
+ ]);
3685
+ const totalLocales = [...srcLocales, ...nodesLocales];
3686
+ const uniqueCodes = Array.from(new Set(totalLocales.map((locale) => locale.folderName)));
3687
+ for (const code of uniqueCodes) {
3688
+ for (const nodeName of currentContext.listNodesFullNames) {
3689
+ if (!nodesLocales.some((locale) => locale.folderName === code && locale.nodeName === nodeName)) {
3690
+ totalLocales.push({
3691
+ folderName: code,
3692
+ filePath: null,
3693
+ fileContent: "",
3694
+ fileContentParsed: null,
3695
+ isGlobal: false,
3696
+ nodeName
3697
+ });
3698
+ }
3699
+ }
3700
+ }
3701
+ const fishBySource = radash.group(totalLocales, (f) => f.folderName);
3702
+ const updatedLocales = [];
3703
+ for (const [folderName, items] of Object.entries(fishBySource)) {
3704
+ const globalItem = items.find((item) => item.isGlobal);
3705
+ const globalContent = (globalItem == null ? void 0 : globalItem.fileContentParsed) ?? {};
3706
+ for (const item of items) {
3707
+ if (item.isGlobal) continue;
3708
+ if (radash.isEmpty(globalContent) && radash.isEmpty(item.fileContentParsed)) {
3709
+ continue;
3710
+ }
3711
+ const combinedContent = {
3712
+ ...globalContent,
3713
+ ...item.fileContentParsed
3714
+ };
3715
+ const wrappedContent = {
3716
+ [item.nodeName]: combinedContent || {}
3717
+ };
3718
+ updatedLocales.push({
3719
+ folderName,
3720
+ fileNodeContent: wrappedContent
3721
+ });
3722
+ }
3723
+ }
3724
+ const fishBySource2 = radash.group(updatedLocales, (f) => f.folderName);
3725
+ const result = [];
3726
+ for (const [folderName, items] of Object.entries(fishBySource2)) {
3727
+ const allContent = items.map((item) => {
3728
+ return JSON.stringify(item.fileNodeContent).trim().slice(1, -1);
3729
+ });
3730
+ const allContentString = `{${allContent.join(",")}}`;
3731
+ const res = {
3732
+ folderPath: `${currentContext.pathDist}/locales/${folderName}`,
3733
+ finalPath: `${currentContext.pathDist}/locales/${folderName}/index.json`,
3734
+ allContent: allContentString
3735
+ };
3736
+ result.push(res);
3737
+ }
3738
+ return result;
3739
+ }
3740
+ async exportAll() {
3741
+ const locales = await this.getAll();
3742
+ await Promise.all(locales.map((locale) => createFolderIfNotExists(locale.folderPath)));
3743
+ return Promise.all(locales.map((locale) => writeFile(locale.finalPath, locale.allContent)));
3744
+ }
3745
+ };
3746
+
3747
+ // src/builder/Builder.class.ts
3748
+ var Builder = class {
3749
+ params;
3750
+ builderController;
3751
+ builderEditor;
3752
+ localesBuilder;
3753
+ constructor(params) {
3754
+ this.params = { minify: false, ...params };
3755
+ this.builderController = new BuilderController({
3756
+ minify: this.params.minify
3757
+ });
3758
+ this.builderEditor = new BuilderEditor({
3759
+ minify: this.params.minify
3760
+ });
3761
+ this.localesBuilder = new LocalesBuilder();
3762
+ }
3763
+ prepare() {
3764
+ createFolderIfNotExists(currentContext.pathLibCacheDir);
3765
+ const runs = [
3766
+ cleanPaths([currentContext.pathDist]),
3767
+ writeFile(`${currentContext.pathLibCacheDir}/config.json`, JSON.stringify(currentContext.config, null, 2))
3768
+ ];
3769
+ return Promise.all(runs);
3770
+ }
3771
+ async buildAll() {
3772
+ await this.prepare();
3773
+ return Promise.all([
3774
+ this.builderController.getControllerTask(),
3775
+ this.builderEditor.getEditorTask(),
3776
+ this.localesBuilder.exportAll()
3777
+ ]);
3778
+ }
3779
+ };
3780
+ function registerChecksCommands(parentCommand) {
3781
+ const checks = new commander.Command("checks").description("[WIP] Commands to check the some stuff");
3782
+ checks.command("nodes-structure").description("[WIP] Verify the structure of the nodes").action(() => {
3783
+ console.log("In construction");
3784
+ });
3785
+ parentCommand.addCommand(checks);
3786
+ }
3787
+ function registerInfoCommands(parentCommand) {
3788
+ const info = new commander.Command("info").description("Command to get information").description("Get information about the package").action(() => {
3789
+ consola.consola.log(prettyJson__default.default.render(currentContext));
3790
+ });
3791
+ parentCommand.addCommand(info);
3792
+ }
3793
+ async function loadTemplate(filePath) {
3794
+ try {
3795
+ const absolutePath = path2__default.default.resolve(filePath);
3796
+ return await fsPromise__default.default.readFile(absolutePath, "utf-8");
3797
+ } catch (error) {
3798
+ throw new Error(`Failed to load file: ${error.message}`);
3799
+ }
3800
+ }
3801
+ async function renderTemplate(templateFilePath, data) {
3802
+ try {
3803
+ const templateSource = await loadTemplate(templateFilePath);
3804
+ const template = Handlebars__default.default.compile(templateSource);
3805
+ return template(data);
3806
+ } catch (error) {
3807
+ throw new Error(`Failed to render template: ${error.message}`);
3808
+ }
3809
+ }
3810
+ var CreateNodeScaffolding = class {
3811
+ nodePascalName;
3812
+ nodeDashName;
3813
+ newNodeDistPath;
3814
+ newNodeEditorDistPath;
3815
+ scaffoldedDistHbs;
3816
+ constructor(innerNodeName) {
3817
+ const { pascalName, dashName } = computeNodeName(innerNodeName);
3818
+ this.nodePascalName = pascalName;
3819
+ this.nodeDashName = dashName;
3820
+ this.newNodeDistPath = `${currentContext.pathSrcNodesDir}/${dashName}`;
3821
+ this.newNodeEditorDistPath = `${this.newNodeDistPath}/${currentContext.config.nodes.editor.dirName}`;
3822
+ this.scaffoldedDistHbs = `${currentContext.currentPackagedDistPath}/scaffolding/create-node/hbs`;
3823
+ }
3824
+ distFolderExist() {
3825
+ return fs__default.default.existsSync(this.newNodeDistPath);
3826
+ }
3827
+ prepareStructure() {
3828
+ return [
3829
+ {
3830
+ finalPath: `${this.newNodeDistPath}/${currentContext.config.nodes.controllerName}.ts`,
3831
+ templatePath: `${this.scaffoldedDistHbs}/controller.ts.hbs`,
3832
+ templateData: {
3833
+ nodePascalName: this.nodePascalName,
3834
+ nodeName: this.nodeDashName
3835
+ }
3836
+ },
3837
+ {
3838
+ finalPath: `${this.newNodeDistPath}/types.ts`,
3839
+ templatePath: `${this.scaffoldedDistHbs}/types.ts.hbs`,
3840
+ templateData: {
3841
+ nodePascalName: this.nodePascalName,
3842
+ nodeName: this.nodeDashName
3843
+ }
3844
+ },
3845
+ {
3846
+ finalPath: `${this.newNodeDistPath}/doc.md`,
3847
+ templatePath: `${this.scaffoldedDistHbs}/doc.md.hbs`,
3848
+ templateData: {}
3849
+ },
3850
+ {
3851
+ finalPath: `${this.newNodeEditorDistPath}/${currentContext.config.nodes.editor.tsName}.ts`,
3852
+ templatePath: `${this.scaffoldedDistHbs}/editor/index.ts.hbs`,
3853
+ templateData: {
3854
+ nodePascalName: this.nodePascalName,
3855
+ nodeName: this.nodeDashName
3856
+ }
3857
+ },
3858
+ {
3859
+ finalPath: `${this.newNodeEditorDistPath}/styles.scss`,
3860
+ templatePath: `${this.scaffoldedDistHbs}/editor/styles.scss.hbs`,
3861
+ templateData: {
3862
+ nodeName: this.nodeDashName
3863
+ }
3864
+ },
3865
+ {
3866
+ finalPath: `${this.newNodeEditorDistPath}/${currentContext.config.nodes.editor.htmlName}.html`,
3867
+ templatePath: `${this.scaffoldedDistHbs}/editor/index.html.hbs`,
3868
+ templateData: {}
3869
+ }
3870
+ ];
3871
+ }
3872
+ async renderFilesTemplates() {
3873
+ const prepared = this.prepareStructure().map(async (item) => {
3874
+ return renderTemplate(item.templatePath, item.templateData).then((content) => {
3875
+ return {
3876
+ finalPath: item.finalPath,
3877
+ content
3878
+ };
3879
+ });
3880
+ });
3881
+ return await Promise.all(prepared);
3882
+ }
3883
+ async writeNewNode() {
3884
+ const files = await this.renderFilesTemplates();
3885
+ await Promise.all(files.map((file) => writeFile(file.finalPath, file.content)));
3886
+ }
3887
+ };
3888
+
3889
+ // src/cli/commands/scaffolding/index.ts
3890
+ function registerScaffoldingCommands(parentCommand) {
3891
+ const scaffolding = new commander.Command("create-node").description("Create new node").action(async () => {
3892
+ const userChoice = await consola.consola.prompt("Enter node name:", {
3893
+ type: "text"
3894
+ });
3895
+ const nodeName = radash.dash(userChoice);
3896
+ const userIsOk = await consola.consola.prompt(`This name is OK for you '${nodeName}'?`, {
3897
+ type: "confirm"
3898
+ });
3899
+ if (!userIsOk) {
3900
+ consola.consola.info("\u{1F44C} OK. Exiting...");
3901
+ return;
3902
+ }
3903
+ const createNewNodeInstance = new CreateNodeScaffolding(nodeName);
3904
+ if (createNewNodeInstance.distFolderExist()) {
3905
+ consola.consola.error(`Node ${createNewNodeInstance.nodeDashName} already exists`);
3906
+ consola.consola.info(`In ${createNewNodeInstance.newNodeDistPath}`);
3907
+ return;
3908
+ }
3909
+ createFolderIfNotExists(createNewNodeInstance.newNodeEditorDistPath);
3910
+ await createNewNodeInstance.writeNewNode();
3911
+ });
3912
+ parentCommand.addCommand(scaffolding);
3913
+ }
3914
+ var nodemonInstance;
3915
+ var browserSyncInstance;
3916
+ function runNodemonAndBrowserSync() {
3917
+ nodemonInstance = nodemon__default.default({
3918
+ exec: `node-red -u ${currentContext.config.watcher.nodeRed.path}`,
3919
+ ignore: ["**/*"],
3920
+ ext: "js,html",
3921
+ verbose: true
3922
+ });
3923
+ nodemon__default.default.once("start", () => {
3924
+ browserSyncInstance = browserSync__default.default.create();
3925
+ browserSyncInstance.init({
3926
+ ui: false,
3927
+ proxy: {
3928
+ target: currentContext.config.watcher.nodeRed.url,
3929
+ ws: true
3930
+ },
3931
+ ghostMode: false,
3932
+ open: false,
3933
+ reloadDelay: 4e3
3934
+ });
3935
+ }).on("quit", () => {
3936
+ consola.consola.info("Nodemon has quit");
3937
+ process.exit(0);
3938
+ });
3939
+ }
3940
+ function restartNodemonAndBrowserSync() {
3941
+ nodemonInstance.restart();
3942
+ browserSyncInstance.reload();
3943
+ }
3944
+ function runWatcher(params) {
3945
+ const hasNodeRedWatcher = currentContext.config.watcher.nodeRed.enabled && currentContext.config.watcher.nodeRed.path;
3946
+ const watcher = chokidar__default.default.watch(currentContext.pathSrcDir, {});
3947
+ const builder = new Builder({ minify: (params == null ? void 0 : params.minify) ?? false });
3948
+ watcher.on("ready", async () => {
3949
+ consola.consola.info("Initial scan complete. Ready for changes");
3950
+ await builder.buildAll();
3951
+ consola.consola.success("Initial Build completed");
3952
+ if (hasNodeRedWatcher) {
3953
+ runNodemonAndBrowserSync();
3954
+ } else {
3955
+ consola.consola.warn("Node-Red watcher is disabled. Please enable it in the config file");
3956
+ }
3957
+ }).on("change", async (path4) => {
3958
+ consola.consola.info(`File ${path4.replace(currentContext.currentDir, "")} has been changed`);
3959
+ await builder.buildAll();
3960
+ consola.consola.success("Build completed");
3961
+ if (hasNodeRedWatcher) {
3962
+ restartNodemonAndBrowserSync();
3963
+ }
3964
+ });
3965
+ }
3966
+
3967
+ // src/cli/index.ts
3968
+ var program = new commander.Command();
3969
+ program.name("node-red-dxp").description("node-red-dxp CLI").version(package_default.version);
3970
+ program.command("build").description("Build project").action(async (options) => {
3971
+ const nodesCount = currentContext.listNodesFull.length;
3972
+ const start = perf_hooks.performance.now();
3973
+ const spinner = ora(`Building ${nodesCount} node(s)...`).start();
3974
+ const builder = new Builder({
3975
+ minify: true
3976
+ });
3977
+ await builder.buildAll();
3978
+ const end = perf_hooks.performance.now();
3979
+ const elapsed = end - start;
3980
+ const elapsedSeconds = elapsed > 1e3 ? `${(elapsed / 1e3).toFixed(2)}s` : `${elapsed.toFixed(2)}ms`;
3981
+ spinner.succeed(`Build completed in ${elapsedSeconds} for ${nodesCount} nodes(s)`);
3982
+ });
3983
+ program.command("watch").description("watch project").option("--minify", "Minify the output", false).action((options) => {
3984
+ runWatcher({
3985
+ minify: options.minify
3986
+ });
3987
+ });
3988
+ registerChecksCommands(program);
3989
+ registerInfoCommands(program);
3990
+ registerScaffoldingCommands(program);
3991
+ program.parse(process6__namespace.argv);
3992
+ //# sourceMappingURL=index.cjs.map
3993
+ //# sourceMappingURL=index.cjs.map